我正在製作多人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