【发布时间】:2012-03-20 17:58:05
【问题描述】:
我知道这里有很多关于这方面的资源,但是我找不到我的代码出了什么问题:
我有一个 Level 类和 Level 的两个子类:GameLevel 和 TransitionLevel。每个此类都实现了 NSCoding 协议。 然后,我有一个 Level 数组(因此它包含 GameLevel 和 TransitionLevel 两个类)。保存存档似乎工作正常:
NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"];
[NSKeyedArchiver archiveRootObject:levels toFile:archivePath];
请注意,levels 是我要保存的数组。我可以看到该文件,它已创建并且似乎包含它应该包含的内容。 但是当我想检索这个数组时:
NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"];
levels = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath];
我有这个例外:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
我不确定我在这里缺少什么。
【问题讨论】:
-
我不知道为什么我的称呼总是在我发帖时被删除。所以你好:)
-
无需在您的问题中添加“你好”、“谢谢”、“问候”等多余的内容。 SO 软件会自动删除其中的一部分;其他时候,人们会编辑您的问题以将其删除。首先将其排除在外,从而节省每个人的时间——这并不粗鲁,而且它会提出一个更能经受时间考验的问题。如果您想添加个人风格,请考虑填写您的profile。
标签: ios serialization nsmutablearray nskeyedarchiver