【问题标题】:How do I add an object into an NSMutableArray to be stored in NSUserDefaults? [duplicate]如何将对象添加到 NSMutableArray 中以存储在 NSUserDefaults 中? [复制]
【发布时间】:2012-04-25 05:10:21
【问题描述】:

可能重复:
Storing custom objects in an NSMutableArray in NSUserDefaults
How to store custom objects in 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 中?

【问题讨论】:

标签: objective-c ios


【解决方案1】:

NSUserDefaults 可以存储数组和字典,无论是否可变,但前提是它们包含属性列表合法类(NSNumberNSStringNSData 和其他一些)。对于其他类,您应该先serialize the object(s) into an NSData,然后再将其放入NSUserDefaults(或放入您要放入NSUserDefaults 或写入属性列表的集合中)。

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

【讨论】:

    【解决方案2】:

    您可以查看ArchiveSerialization

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多