我編碼我的對象,並將其保存到一個文件,如下所示:
[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
它應該創建該文件。但我的意思是,確保文件在您讀取之前確實存在! –