2012-06-27 3 views
1

Мой пользовательский объект содержит массив из unichar примитивов. Однако в NSCoder нет метода encodeUnichar:ForKey. Мое решение состоит в том, чтобы преобразовать массив 2d unichar в NSString, а затем закодировать его.Как кодировать unichar-массив с использованием NSCoding

Однако отсутствие метода кодирования персонажа заставляет меня чувствовать, что мне не хватает чего-то очевидного, тем более, что я не смог найти ответ на переполнение стека.

Перед тем, как приступить к методу NSString, кто-нибудь знает, есть ли более простой способ сделать это, встроенный в протокол NSCoding?

Thanks Lee.

ответ

1

A C массив данных фиксированного размера лучше всего кодировать, используя encodeBytes:length:forKey:. См. Encoding and Decoding C Data Types для получения полной информации.

+0

Это будет отлично работать, пока вы не попытаетесь декодировать значение на машине с другой endianess. Я знаю, что все машины Apple малодушны, но это может измениться в будущем (это уже есть). –

+0

Вы должны поменять байты перед кодированием и после декодирования с помощью 'NSSwapHostShortToLittle' и' NSSwapLittleShortToHost' или ('NSSwapHostShortToBig' и' NSSwapBigShortToHost', если вы предпочитаете big-endian). –

+0

Это прекрасно работает, если вы помните, что unichar имеет длину 2 байта! – Tangler

 Смежные вопросы

  • Нет связанных вопросов^_^