2013-07-08 148 views
4

我试图将NSArray的对象保存到NSUserDefaults,但是当我将NSArray退回到getObject时,它不包含任何内容。将NSArray保存到NSUserDefaults不起作用

我把一个破发点这里计算对象,并确认有数组

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

在这里,在项目是我拉出来和数组什么都不说在里面。

​​
+7

执行数组中的对象符合NSCoding? – CodaFi

+0

可能的重复http://stackoverflow.com/questions/537044/storing-custom-objects-in-an-nsmutablearray-in-nsuserdefaults – HepaKKes

回答

4

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

编辑

好吧,可能它不符合符合对象的NSArrayNSCopying协议,但它无疑适用于符合NSCoding协议由布拉德·拉尔森指出了以下的答案的对象:

Storing custom objects in an NSMutableArray in NSUserDefaults

+1

我不会滥用NSUserDefaults那么多,它主要是设置存储。但是解决方案正在工作,所以+1。 – Andy

+0

@Andy好点,我完全同意你的意见......无论如何,我试图回答jgervin的问题。我可能会遇到错误的问题=) – HepaKKes

1

文档:

值参数可以是唯一属性列表对象:NSData的, 的NSString,的NSNumber,NSDate的,NSArray中,或NSDictionary的。对于NSArray和 NSDictionary对象,其内容必须是属性列表对象。

是数组NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary对象的内容?

相关问题