【发布时间】:2013-02-05 03:27:10
【问题描述】:
在我的应用程序中,我有一个名为 matchDataDictionary 的字典,我设置了以下内容:
[[GCTurnBasedMatchHelper sharedInstance].matchDataDictionary setObject:deck forKey:@"deck"];
其中 deck 是 Deck 的一个实例:https://gist.github.com/naderhen/4711899
然后我尝试使用以下内容测试归档/取消归档:
存档(这似乎可行):
NSMutableData *newData = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:newData];
[archiver encodeObject:[GCTurnBasedMatchHelper sharedInstance].matchDataDictionary forKey:@"root"];
[archiver finishEncoding];
NSLog(@"Archived Data: %@", newData);
取消归档(不起作用):
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:newData];
NSMutableDictionary *matchDataDictionary = [unarchiver decodeObjectForKey:@"root"];
[unarchiver finishDecoding];
NSLog(@"Unarchived Data: %@", matchDataDictionary);
任何关于如何有效归档和随后取消归档这些数据的指导将不胜感激。如果有帮助,这适用于使用 GameKit 框架的回合制游戏,因此我正在尝试准备用户操作以通过当前比赛的 matchData 发送。
还有!任何关于我如何修复 Deck 编码以包含其“Tiles”数组的建议将不胜感激。
非常感谢!
纳德
【问题讨论】:
-
是的,它似乎打破了并把我带到了以下:i.imgur.com/Mmr7Tuj.png
-
在您的代码中,initWithCoder 调用父级的init,尝试将其更改为
[self init] -
如果我将其更改为 (self = [self init]),我会遇到同样的问题
标签: ios objective-c ios6 nskeyedarchiver