6

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

4

4 回答 4

14

您必须对对象(在您的数组中)中的对象进行编码/解码,并将数组存档到 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

于 2013-02-11T12:26:55.953 回答
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

于 2013-02-11T12:23:16.613 回答
1

是的,你可以做到。

在这里检查你的答案:

如何在 NSUserDefaults 中设置 NSArray?

于 2013-02-11T12:28:12.637 回答
1

是的,有可能,只是你必须在存储和检索 NULL 值时处理它,

于 2013-02-11T12:31:05.083 回答