Я использую double [] вместо NSArray. Кто-нибудь знает, как кодировать его для архивированияiphone/цель C/как закодировать double [] для архивации
2
A
ответ
1
Два варианта приходят на ум:
- превратить его в
NSArray
изNSNumber
объектов. - Shoehorn в
NSValue
илиNSData
объект.
0
Если вы не передачи кодированных данных между платформами, где вы можете столкнуться с проблемами и размер байтов данных, вы можете использовать
- (void)encodeBytes:(const uint8_t*)bytesp length:(NSUInteger)lenv forKey:(NSString*)key;
хранить байты непосредственно, а затем
- (const uint8_t*)decodeBytesForKey:(NSString*)key returnedLength:(NSUInteger*)lengthp;
, чтобы декодировать их. Как указывает файл заголовка NSCoder, метод decodeBytesForKey: возвратилLength: возвращает неизменяемые байты, поэтому вы захотите скопировать возвращенный массив в свой двойной массив. Поскольку возвращаемый массив является const, я предполагаю, что декодер владеет этим массивом и освободит его, когда декодер будет отменен.
Это не так удобно, как просто поместить массив в объект NSData и архивировать его, но это позволяет избежать накладных расходов на создание временного объекта.