iphone / цель C / как кодировать двойной [] для архивирования - PullRequest
2 голосов
/ 31 марта 2010

Я использую double [] вместо NSArray. Кто-нибудь знает, как закодировать его для архивирования

Ответы [ 2 ]

1 голос
/ 31 марта 2010

На ум приходят два варианта:

  1. Преобразуйте его в NSArray из NSNumber объектов.
  2. Обувает это в NSValue или NSData объект.
0 голосов
/ 11 октября 2011

Если вы не передаете закодированные данные между платформами, где у вас могут возникнуть проблемы с порядком байтов и размером данных, вы можете использовать

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

для непосредственного хранения байтов, а затем

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

чтобы расшифровать их. Как указывает заголовочный файл NSCoder, метод decodeBytesForKey: returnLength: возвращает неизменяемые байты, поэтому вы захотите скопировать возвращенный массив в свой двойной массив. Поскольку возвращаемый массив является константным, я предполагаю, что декодер владеет этим массивом и освободит его, когда декодер освобожден.

Это не так удобно, как просто помещать массив в объект NSData и архивировать его, но это позволяет избежать накладных расходов на создание временного объекта.

...