我编码我的对象,并将其保存到一个文件,如下所示:
[NSKeyedArchiver archiveRootObject:self.parent toFile:@"gameScene.plist"];
NSKeyedUnarchiver不调用-initWithCoder:在设备上(但好于模拟器)
并将其解码为:
scene = [[NSKeyedUnarchiver unarchiveObjectWithFile:@"gameScene.plist"] retain];
在模拟器中,上述解码代码正确调用我的类的initWithCoder
方法。但是当我在设备中运行相同的时候,会返回'initWithCoder is not called nor the
init`方法和'nil'对象。
任何人都可以请解释这里错了什么?
编辑:出于测试目的,我给了相同的一组两个init
和initWithCoder
报表,而不是initWithCoder
子对象进行解码,并在我的encodeWithCoder
注释掉了所有的编码。
这似乎很奇怪。也许确保'.plist'正确创建? –
我是否需要手动创建plist?通过'[NSKeyedArchiver archiveRootObject:toFile:];'创建文件? – saiy2k
它应该创建该文件。但我的意思是,确保文件在您读取之前确实存在! –