NSUserDefaults可以使用自定义对象保存NSArray吗?

时间:2013-02-11 12:17:15

标签: ios cocoa-touch

标题几乎解释了它。我是否需要先对序列化对象,还是可能?

4 个答案:

答案 0 :(得分:12)

您必须对对象(在数组中)中的对象进行编码/解码,并将数组存档到NSData。

添加

<NSCoding>

到对象的类(在数组中)并按照编译器的警告:D

然后将您的数组归档为:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:yourArray];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"yourKey"];


NSArray *array= [NSKeyedUnarchiver unarchiveObjectWithData:[defaults objectForKey:@"yourKey"];

查看http://soff.es/archiving-objective-c-objects-with-nscoding

答案 1 :(得分:1)

您需要序列化它。

来自NSUSerDefaults的苹果文档:

  

NSUserDefaults类提供了访问常用类型(如浮点数,双精度数,整数,布尔值和URL)的便捷方法。默认对象必须是属性列表,即(或集合的实例组合)的实例:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。如果要存储任何其他类型的对象,通常应将其存档以创建NSData实例。有关更多详细信息,请参阅“首选项和设置编程指南”。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

答案 2 :(得分:1)

是的,你可以做到。

在这里检查你的答案:

  

How to set an NSArray in NSUserDefaults?

答案 3 :(得分:1)

是的,有可能,只需要在存储&amp;存储时保持NULL值。检索它,