カスタム オブジェクトを含む保存済みの NSMutableArray を取得できません。アプリがクラッシュし、コンソールがhttp://pastie.org/1226822を報告します。これが私のオブジェクトの .h ファイルhttp://pastie.org/1226823です。これが私のオブジェクトの .m ファイルhttp://pastie.org/1226826です。データを保存する方法は次のとおりですhttp://pastie.org/1226830 . これが私のデータhttp://pastie.org/1226831を取得する方法です。前もって感謝します。
9210 次
3 に答える
8
修理済み。NSUserDefaults の NSMutableArray にカスタム オブジェクトを格納するで Brad Larson のコードを使用しました。データを配列に戻す方法に問題があったと思いますが、現在は機能しています。
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"savedArray"];
if (dataRepresentingSavedArray != nil)
{
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if (oldSavedArray != nil)
objectArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
objectArray = [[NSMutableArray alloc] init];
}
于 2010-10-17T15:52:05.990 に答える
1
コンソールは問題全体について教えてくれます。Assignment
オブジェクトはメソッドを実装していませんinitWithCoder:
'NSInvalidArgumentException', reason: '-[Assignment initWithCoder:]: unrecognized selector sent to instance 0x5f04090'
KeyArchiver はクラスを呼び出して、デコード データに基づいて新しいオブジェクトを初期化します。使用する必要があります[decoder objectForKey:YOUR_KEY];
于 2010-10-17T02:39:00.540 に答える
1
問題は、NSMutableArray や NSKeyedArchiver の呼び出し方法ではありません。問題は、配列内のオブジェクト自体がアーカイブできないことです。
NSCoding プロトコルを実装するには、オブジェクトが必要です。その方法に関するドキュメントはたくさんありますが、基本的にinitWithCoder:
は、アーカイブからオブジェクトを作成するメソッドと、encodeWithCoder:
オブジェクトをアーカイブに書き込むメソッドを追加するだけです。簡単です!
于 2010-10-17T02:45:04.673 に答える