A 有一些NSValue
(通过 KVC 获得valueForKey
)我需要附加到一个NSData
对象,以便使用 Game Center 通过网络发送它。显然,我还需要NSValue
从后面转换NSData
为更多的 KVC ( setValue:forKey:
)。
我不知道 each 的确切类型NSValue
,所以我仅限于使用NSValue
and提供的接口NSData
。我应该提一下,从NSValue
不是指针类型。
我很惊讶没有[NSData dataWithValue:value]
,也没有类似[value dataWithEncoding:]
或类似的东西。但也许我是盲人,没有看到明显的选择。我考虑过使用getValue:
将值复制到缓冲区中,但是除了使用所有可能的类型并将其与所有可能的类型进行比较void*
之外,我应该如何确定缓冲区长度?objCType
我该怎么办?
注意:
NSKeyedArchiver
这是不可能的,因为它非常低效。一个 4 字节的浮点数被归档到 142 字节NSData
,一个 8 字节的浮点数在归档到CGPoint
时使用 260 字节NSData
。将发送的数据量保持在最低限度对我正在做的事情至关重要。