【问题标题】:Is it necessary to use NSKeyedArchiver for standard Cocoa collections?是否有必要将 NSKeyedArchiver 用于标准 Cocoa 集合?
【发布时间】:2012-08-07 03:17:22
【问题描述】:

我最近想从用户默认值中存储和检索 NSArrays,我发现并使用了 Storing custom objects in an NSMutableArray in NSUserDefaults 的建议,效果很好。

然而,回想起来,如果您使用标准集合类而不是自定义对象,这似乎有点过头了。任何人都可以确认我正在使用的建议解决方案的主要好处(上面链接)是您可以以这种方式存储自定义类,但是对于使用内容是字符串或其他数组或标准字典的NSArray,这个不需要使用NSKeyedArchiver 的方法吗?

【问题讨论】:

    标签: cocoa collections nskeyedarchiver


    【解决方案1】:

    是的,请参阅NSUserDefaults 文档:

    setObject:forKey:

    value 参数只能是属性列表对象:NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。对于 NSArray 和 NSDictionary 对象,它们的内容必须是属性列表对象。

    如果您需要将对象转换为NSData,则只需使用NSCoder 之类的NSKeyedArchiver

    【讨论】:

    • 在这种情况下,任何自定义类/对象确实可以转换为 NSData,对吗?
    • 是的,任何实现NSCoding 协议的自定义对象。
    • @rickster 感谢您的编辑,我认为 Dash 应用程序干扰了我的剪切/粘贴 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2014-03-01
    相关资源
    最近更新 更多