【问题标题】:NSUserDefaultsProblemNSUserDefaults 问题
【发布时间】:2011-03-21 21:25:30
【问题描述】:

我有一个简单的问题: 我向 NSArray 添加了一个对象,然后向其中添加了一个对象,然后我使用 NSUserDefaults 方式保存数组,但它不起作用,我的意思是数组没有保存,控制台向我发送了这个消息:

2011-03-21 23:09:53.994 Project[10490:207] * -[NSUserDefaults setObject:forKey:]: 尝试插入非属性值 '( “” )' 的类 '__NSArrayM'。

有谁知道我该如何解决这个问题。

【问题讨论】:

    标签: cocoa-touch ios nsuserdefaults


    【解决方案1】:

    NSUserDefaults 只允许你保存基本的轻量级对象;例如 NSString、NSNumber 和 NSData。如果要添加另一个类,则必须事先将其硬塞到 NSData 对象中。这很简单,通常只需调用[NSKeyedArchiver archivedDataWithRootObject:array];。请注意,数组中的对象必须实现 NSCoding 协议,如果您想保存,则必须将其添加到您自己的任何自定义类中。

    还请记住,NSUserDefaults 用于轻量级首选项,而不是应用程序数据。如果您有大量对象,最好将其归档到自己的文件中或使用 Core Data(如果您愿意使用更高级的东西)。

    【讨论】:

      【解决方案2】:

      您可以保存在 NSUserDefaults 中的唯一类型是属性列表类型:NSString、NSDate、NSArray、NSDictionary、NSNumber、NSData。您可能正在尝试保存不是这些类型之一的对象数组。

      【讨论】:

        猜你喜欢
        • 2011-08-08
        • 2016-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多