2012-03-20 5 views
1

オブジェクト: GameLevelとTransitionLevelです。このクラスのそれぞれは、NSCodingプロトコルを実装します。 次に、私はLevelの配列を持っています(GameLevelとTransitionLevelの両方のクラスを含んでいます)。アーカイブを保存するとうまくいくようです:直列化配列は、私は私のコードで間違って何が起こっているのか見つけることができない、私はここでそれについての多くのリソースがまだある知っているiOSの

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

レベルは保存したい配列です。私はファイルを見ることができます、それは作成され、それが含まれるはずのものが含まれているようです。 しかし、私は、この配列を取得したい:

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

+0

あなたの質問に "こんにちは"、 "ありがとう"、 "よろしく"など余分なものを追加する必要はありません。 SOソフトウェアは自動的にそのソフトウェアの一部を削除します。他の時間に、人々はそれを削除するためにあなたの質問を編集します。すべての時間を節約するためには、最初の場所に置いておいてください。それは失礼ではなく、時間のテストがより良い立場に立つようになります。個人的な接触を追加する場合は、代わりに[プロフィール](http://stackoverflow.com/users/251552/user251552)を記入することを検討してください。 – Caleb

答えて

1

の実装がnilのいずれかを返した場合、コードの一部がnilの値を配列に挿入しようとします。

ブレークポイントナビゲータ(⌘6)に移動し、例外ブレークポイントを追加することができます。次に、アプリケーションが例外を発生させると、Debug Navigatorは現在実行されている関数とメソッドのスタックを表示します。これにより、nilを配列に挿入しようとしているメソッドを正確に知ることができます。

+0

私は以前このビューを使用したことはありませんでした。ありがたいことですが、かなり便利です。私は間違いを直接見つけました(それはばかなものでした)。 – rmonjo

関連する問題