【发布时间】:2017-03-14 23:35:07
【问题描述】:
更新:如果我从 applicationDidFinishLaunching: 调用 archiveRootObject: 则有效。如果我从单例类的 init: 方法调用它,它会返回 nil。
我对 NSKeyedUnarchiver unarchiveObjectWithFile: 的行为感到非常困惑。 The documentation 表示如果文件不存在,它将返回 nil。对于我的一个对象,会发生以下情况:
Game *g1 = [Game getGame];
NSString *archivePath = [Game getArchivePath];
bool success = [NSKeyedArchiver archiveRootObject:g1 toFile:archivePath];
Game *g2 = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath];
// success is true, g2 is nil
我已经验证该文件确实存在并且正在被 archiveRootObject: 方法写入。我做错了什么阻止我从存档中取回游戏对象?
【问题讨论】:
-
我怀疑这会解决你的问题,但在 Objective-C 中,正确的术语是
BOOL而不是bool。 -
感谢您的提示。这是我的第一个 Objective-C 项目。我已将所有布尔值更新为布尔值。
-
在 objc_exception_throw 处设置断点,看看是否引发了异常。
-
@Algorithmic 你找到解决方案了吗?
标签: iphone cocoa-touch