NSKeyedUnarchiver没有在设备上调用-initWithCoder :(但在模拟器上没问题)

时间:2011-11-03 13:10:52

标签: objective-c nscoding

我正在编码我的对象并将其保存到文件中,如下所示:
[NSKeyedArchiver archiveRootObject:self.parent toFile:@"gameScene.plist"];

解码如下:
scene = [[NSKeyedUnarchiver unarchiveObjectWithFile:@"gameScene.plist"] retain];

在模拟器中,上面的解码代码正确地调用了我的类的initWithCoder方法。但是当我在设备中运行相同的时候,会返回'initWithCoder is not called nor the init`方法和'nil'对象。

有人可以解释这里有什么不对吗?

编辑:出于测试目的,我在initinitWithCoder中都提供了相同的语句集,而不是解码initWithCoder中的子对象并注释掉我encodeWithCoder中的所有编码。

1 个答案:

答案 0 :(得分:2)

也许是因为你无法写入iOS设备上的根目录?我认为@"gameScene.plist"的路径实际上意味着/gameScene.plist,它在iOS设备上不可写,但在OS X上是允许的。-archiveRootObject:toFile:方法可能正在返回{{1}这里,表示文件未成功创建。

你可能想要做类似的事情:

NO