0

可能重复:
在 NSUserDefaults 的 NSMutableArray 中
存储自定义对象 如何在 NSUserDefaults 中存储自定义对象

我试图将一个从我编写的名为“Animal”的类实例化的对象存储在 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 中?

4

2 回答 2

3

NSUserDefaults可以存储数组和字典,无论是否可变,但前提是它们包含属性列表合法类(NSNumberNSStringNSData和其他一些)。对于其他类,您应该先将对象序列化为 anNSData ,然后再将其放入NSUserDefaults(或放入您正在放入NSUserDefaults或写入属性列表的集合中)。

在大多数应用程序中,将自定义类放入NSUserDefaults其中并不经常发生,因此您可能还会考虑您Animal的 s 是否真的属于那里。请记住,NSUserDefaults用于设置、状态和其他小东西——您的应用管理的数据最好保存在其他地方。使用归档或属性列表在应用程序的沙箱或 Core Data(或其他一些数据库)中写入文件。

于 2012-04-12T19:54:37.537 回答
-3

你可以签出ArchiveSerialization

于 2012-04-12T20:02:03.400 回答