代码之家  ›  专栏  ›  技术社区  ›  Amarsh

iphone/objective c/how to encode a double[]用于存档

  •  2
  • Amarsh  · 技术社区  · 14 年前

    我用的是双[]而不是NSARRAY。有人知道如何编码存档吗

    2 回复  |  直到 13 年前
        1
  •  1
  •   Dave DeLong    14 年前

    有两种选择:

    1. 将其转换为 NSArray 属于 NSNumber 物体。
    2. 把它塞进 NSValue NSData 对象。
        2
  •  0
  •   davehayden    13 年前

    如果不在平台之间传输编码数据,可能会遇到endianness和数据大小问题,那么可以使用

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

    直接存储字节,然后

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

    解码它们。正如nscoder头文件指出的那样,decodeBytesForkey:returnedLength:方法返回不可变的字节,因此您需要将返回的数组复制到Mallocated双数组中。因为返回的数组是const,所以我假设解码器拥有该数组,并且在解码器解除锁定时释放它。

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

    推荐文章