どうすればダブルで-[NSCoder encodeBytes:length:]
使用できますか?-[NSCoder decodeBytesWithReturnedLength:]
NSCoding
2つのdouble
プロパティに準拠するオブジェクトがあり、現在NSNumber
、値のエンコード/デコードに使用しています。
- (id)initWithCoder:(NSCoder *)decoder
{
if (!(self = [super init]))
return nil;
latitude = [(NSNumber *)[decoder decodeObject] doubleValue];
longitude = [(NSNumber *)[decoder decodeObject] doubleValue];
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:[NSNumber numberWithDouble:latitude]];
[coder encodeObject:[NSNumber numberWithDouble:longitude]];
}
ただし、これは許容できないパフォーマンスをもたらします(テストデータでデコードするのに6秒かかります。これは、本番データよりもはるかに小さいです)。
キーを使用している場合は使用できますが、キーは使用-encodeDouble:forKey:
していません(低速です)。MacOSXとは異なり、-encodeDouble:
iOSには方法がありません。
だから、とを使う必要がありますencodeBytes:length:
がdecodeBytesWithReturnedLength:
、私のC能力はかなり限られています。void *
との間で変換する方法が正確にはわかりませんdouble
。