Как конвертировать NSValue в NSData и обратно?

А есть рядNSValue (получено через KVCvalueForKey) что мне нужно добавить кNSData объект для того, чтобы отправить его по сети с помощью Game Center. Очевидно, мне также нужно будет преобразоватьNSValue обратно изNSData для большего KVC (setValue:forKey:).

Я не знаю точный тип каждогоNSValueпоэтому я ограничен использованием интерфейсов, предоставляемыхNSValue а такжеNSData, Я должен отметить, чтоNSValue никогда не являются типами указателей.

Я удивлен, что нет[NSData dataWithValue:value] и ни что то подобное[value dataWithEncoding:] или похожие. Но, возможно, я слепой и не вижу очевидного выбора. Я думал об использованииgetValue: скопировать значение вvoid* буфер, но как я должен определить длину буфера, кроме как с помощьюobjCType и сравнивая это со всеми возможными типами?

Как я должен идти об этом?

НОТА: NSKeyedArchiver не может быть и речи, потому что это ужасно неэффективно. 4-байтовое число с плавающей точкой архивируется в 142 байтаNSData8 байтCGPoint использует 260 байт при архивации вNSData, Сохранение минимального объема отправляемых данных имеет решающее значение для того, что я делаю.

Ответы на вопрос(3)

Ваш ответ на вопрос