iphone / objective C /如何编码double []进行归档

时间:2010-03-31 01:17:40

标签: iphone nscoder

我使用的是double []而不是NSArray。有谁知道如何对其进行编码以进行存档

2 个答案:

答案 0 :(得分:1)

有两种选择:

  1. 将其转换为NSArrayNSNumber个对象。
  2. 将其变成NSValueNSData对象。

答案 1 :(得分:0)

如果您没有在平台之间传输编码数据,那么您可能会遇到有关字节序和数据大小的问题,您可以使用

- (void)encodeBytes:(const uint8_t*)bytesp length:(NSUInteger)lenv forKey:(NSString*)key;

直接存储字节,然后

- (const uint8_t*)decodeBytesForKey:(NSString*)key returnedLength:(NSUInteger*)lengthp;

解码它们。正如NSCoder头文件指出的那样,decodeBytesForKey:returnedLength:方法返回不可变字节,因此您需要将返回的数组复制到malloced double数组中。由于返回的数组是常量,我假设解码器拥有该数组,并在释放解码器时释放它。

这不像将数组放入NSData对象并对其进行存档那样方便,但它确实避免了创建临时对象的开销。