Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将NSArray保存到NSUserDefaults不起作用_Ios_Objective C_Nsarray_Nsuserdefaults - Fatal编程技术网

Ios 将NSArray保存到NSUserDefaults不起作用

Ios 将NSArray保存到NSUserDefaults不起作用,ios,objective-c,nsarray,nsuserdefaults,Ios,Objective C,Nsarray,Nsuserdefaults,我正试图将对象的NSArray保存到nsserdefaults,但当我使用getObject将NSArray拉出时,它什么也不包含 我在这里放了一个断点来计数对象并验证数组中是否有项 [[NSUserDefaults standardUserDefaults] setObject:mappingResult.array forKey:kArrayOfFoundThings]; [[NSUserDefaults standardUserDefaults] synchronize]; 这里是我把它

我正试图将对象的
NSArray
保存到
nsserdefaults
,但当我使用
getObject
NSArray
拉出时,它什么也不包含

我在这里放了一个断点来计数对象并验证数组中是否有项

[[NSUserDefaults standardUserDefaults] setObject:mappingResult.array forKey:kArrayOfFoundThings];
[[NSUserDefaults standardUserDefaults] synchronize];
这里是我把它们拉出来的地方,阵列显示里面什么都没有

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

值参数只能是属性列表对象:NSData, NSString、NSNumber、NSDate、NSArray或NSDictionary。对于NSArray和 NSDictionary对象,其内容必须是属性列表对象


数组的内容是NSData、NSString、NSNumber、NSDate、NSArray还是NSDictionary对象?

假设数组中包含的对象符合
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"] ;
编辑

好的,它可能不适用于符合
NSCopying
协议的对象的
NSArray
,但可以说它适用于符合
NSCoding
协议的对象,正如Brad Larson在以下回答中指出的:


数组中的对象是否符合NSCoding?可能重复我不会滥用NSUSERDEFAULT太多,它主要是设置存储。“但是解决方案是有效的,所以+1。”安迪:好的,我完全同意你的观点……不管怎样,我试图回答杰格文的问题。我可能答错了问题=)