0
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];

カスタムオブジェクトの配列をNSCodingプロトコルに準拠させると、上記は機能しますか?カスタムクラスと、カスタムオブジェクトの配列を保持するView Controllerの両方を、NSCodingプロトコルに準拠させる必要がありますか、それともカスタムクラスのみに準拠させる必要がありますか?NSKeyedArchiverをどこかで使用する必要がありますか?

4

1 に答える 1

2

NSKeyedArchiverまたはを使用して、アレイをアーカイブする必要があるようですNSArchiver。最初に配列を NSData オブジェクトにアーカイブする場合:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];

次に、そのデータを次のように NSUserDefaults に保存できます。

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"myArray"];

配列をロードするには、次を使用します。

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"myArray"];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];

NSMutableArray を使用する場合はNSArray、上記のコードの出現箇所をNSMutableArray. またはNSMutableArray *myMutableArray = [myArray mutableCopy]、操作する NSMutableArray を提供することもできます。

しかし、NSCoding 準拠にするのに苦労するなら、ファイルにアーカイブしてみませんか?

アーカイバーを使用する必要があると思わせたドキュメントはここにあるので、自分で確認してください。

于 2010-09-19T06:27:14.953 に答える