2012-03-20 20 views
1

我知道有很多關於資源在這裏,但還沒有,我找不到什麼我的代碼會錯:自定義的序列化對象數組的iOS

我有一個類級和第二級的兩個子類: GameLevel和TransitionLevel。每個類都實現NSCoding協議。 然後,我得到一個Level數組(因此它包含GameLevel和TransitionLevel的兩個類)。保存存檔似乎工作正常:

NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"]; 
[NSKeyedArchiver archiveRootObject:levels toFile:archivePath]; 

請注意,levels是我想要保存的數組。我可以看到該文件,它已創建並似乎包含它應該包含的內容。 但是,當我想取出這個數組:

NSString *archivePath = [DOCUMENT_DIRECTORY stringByAppendingPathComponent:@"levels.archive"]; 
levels = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath]; 

我這有例外:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 

我不知道我在這裏失蹤。

+0

我不知道爲什麼我發表的帖子總是被刪除。所以你好:) – rmonjo 2012-03-20 18:00:09

+0

不需要添加像「你好」,「謝謝」,「問候」等多餘的東西到你的問題。 SO軟件會自動刪除其中的一部分;其他時候,人們會編輯您的問題以將其刪除。首先將所有時間都放在首位 - 這不是粗魯的,它會提出一個更好的經受時間考驗的問題。如果您想添加個人色彩,請考慮填寫您的[個人資料](http://stackoverflow.com/users/251552/user251552)。 – Caleb 2012-03-20 18:32:47

回答

1

要麼你的initWithCoder:的實現返回nil,要麼你的代碼的某些部分試圖向數組中插入一個nil值。

您可以進入Breakpoint Navigator(⌘6)並添加一個Exception Breakpoint。然後,當應用程序引發異常時,Debug Navigator將顯示當前執行的函數和方法的堆棧。這將允許您準確知道哪個方法試圖將nil插入到數組中。

+0

非常感謝你我以前從未使用過這個視圖,它非常方便。我直接找到了我的錯誤(這是一個愚蠢的錯誤)。 – rmonjo 2012-03-20 18:22:02

相關問題