2012-04-12 81 views
0

可能重复:
Storing custom objects in an NSMutableArray in NSUserDefaults
How to store custom objects in NSUserDefaults如何将对象添加到NSMutableArray中以存储在NSUserDefaults中?

我试图存储从一个类实例化一个对象我编写的名为 “动物” 在一个NSMutableArray存储在NSUserDefaults的。但是,我得到这个错误。

[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
    "<Animal: 0xcea7060>" 
)' of class '__NSArrayM'. Note that dictionaries and arrays in property lists must also contain only property values. 

这是什么意思?也许我不能将对象存储在NSMutableArrays中以存储在NSUserDefaults中?

+3

的可能重复[如何在存储NSUserDefaults的自定义对象(http://stackoverflow.com/q/2315948/);也http://stackoverflow.com/q/7459585/,http://stackoverflow.com/q/537044/和http://stackoverflow.com/q/471830/ – 2012-04-12 19:48:28

回答

3

NSUserDefaults可以存储阵列和字典,可变的或没有,但只有当它们包含属性列表法律类(NSNumberNSStringNSData,和其他一些)。对于其他课程,在将其放入NSUserDefaults(或放入要放入NSUserDefaults或写入属性列表的集合中)之前,您应该使用serialize the object(s) into an NSData

将自定义类放入NSUserDefaults并不会在大多数应用中经常发生,因此您可能还会考虑您的Animal是否真的属于此类。请记住,NSUserDefaults适用于设置,状态和其他小事情 - 您的应用管理的数据在其他地方更好。使用archiving或属性列表在您的应用程序沙箱中写入文件,或者使用核心数据(或某些其他数据库)来编写这些文件。

-3

可以签出ArchiveSerialization

相关问题