我正在制作多人iOS游戏,并遇到以下问题:我发送一个包含自定义对象数组的字典。这些自定义对象符合NSCoding
。我的字典转换为NSData
这样的:GCDAsyncSocket在运输时改变数据
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:packet];
然后把它
[asyncSocket writeData:data withTimeout:-1 tag:tag];
接收
[sock readDataWithTimeout:-1 tag:tag];
并尝试解除存档
NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
一切看起来都非常小号imple,但应用程序崩溃而正在取消归档数据和I收到以下错误
[NSKeyedUnarchiver initForReadingWithData:]:难以理解归档(0X62,0x70,0x6c,0×69(0x73)的,0x74,的0x30,的0x30)”
我查看了发送和接收数据的描述,发现数据来自接收机设备1)已更改和2)截断。
当我通过GameKit协议发送完全相同的数据时,Game Center和蓝牙没有像这样的问题 - 我收到的数据不变,所以显然问题在于GCDAsyncSocket深处。
有没有人遇到过这样的麻烦?谢谢
这怎么可能与NSDictionary一起使用。它如何知道你将使用的终结者是什么? – Andrew 2013-03-12 17:43:32