更新:如果我從applicationDidFinishLaunching:中調用archiveRootObject:這會起作用。如果我從單例類的init:方法調用它,它將返回nil。NSKeyedUnarchiver unarchiveObjectWithFile:在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是越來越寫到:方法。我做錯了什麼阻止我將Game對象從存檔中取出?
我懷疑這會解決你的問題,但在Objective-C中,正確的術語是'BOOL'而不是'bool'。 – jbrennan 2009-08-29 21:31:35
感謝您的提示。這是我的第一個Objective-C項目。我已經更新了所有布爾的BOOL。 – brantonb 2009-08-30 05:18:12
在objc_exception_throw上設置一個斷點並查看是否引發異常。 – peterb 2009-08-30 13:18:31