5

NSArrayオブジェクトの をに保存しようとしていますNSUserDefaultsが、NSArray引き戻すとgetObject何も含まれていません。

オブジェクトをカウントし、配列内にアイテムがあることを確認するために、ここにブレーク ポイントを配置します。

[[NSUserDefaults standardUserDefaults] setObject:mappingResult.array forKey:kArrayOfFoundThings];
[[NSUserDefaults standardUserDefaults] synchronize];

ここでそれらを引き出しますが、配列には何も入っていないと表示されます。

NSArray *allAmbulances = [[NSUserDefaults standardUserDefaults] objectForKey:kArrayOfFoundThings]; 
4

2 に答える 2

5

配列に含まれるオブジェクトがNSCodingプロトコルに準拠していると仮定すると、次を使用できます

// let's take the NSString as example
NSArray *array = @[@"foo", @"bar"];

[[NSUserDefaults standardUserDefaults] setObject: [NSKeyedArchiver archivedDataWithRootObject:array] forKey:@"annotationKey"];
NSArray *archivedArray = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"annotationKey"]] ;

それらがNSCopyingプロトコルに準拠している場合、

// let's take the NSString as example
NSArray *array = @[@"foo", @"bar"];

[[NSUserDefaults standardUserDefaults] setObject: array forKey:@"annotationKey"];
NSArray *archivedArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"annotationKey"] ;

編集

わかりました、おそらくプロトコルにNSArray準拠するオブジェクトでは機能しませんが、次の回答でブラッド・ラーソンが指摘したようNSCopyingに、プロトコルに準拠するオブジェクトに対しては間違いなく機能します。NSCoding

NSUserDefaults の NSMutableArray にカスタム オブジェクトを格納する

于 2013-07-08T20:37:34.390 に答える
1

ドキュメンテーション:

値パラメーターは、プロパティ リスト オブジェクトのみにすることができます: NSData、NSString、NSNumber、NSDate、NSArray、または NSDictionary。NSArray および NSDictionary オブジェクトの場合、その内容はプロパティ リスト オブジェクトである必要があります。

配列の内容は、NSData、NSString、NSNumber、NSDate、NSArray、または NSDictionary オブジェクトですか?

于 2013-07-08T20:24:16.917 に答える