3

カスタム オブジェクトを含む保存済みの NSMutableArray を取得できません。アプリがクラッシュし、コンソールがhttp://pastie.org/1226822を報告します。これが私のオブジェクトの .h ファイルhttp://pastie.org/1226823です。これが私のオブジェクトの .m ファイルhttp://pastie.org/1226826です。データを保存する方法は次のとおりですhttp://pastie.org/1226830 . これが私のデータhttp://pastie.org/1226831を取得する方法です。前もって感謝します。

4

3 に答える 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 に答える