【问题标题】:IOS Save Association Array With NSKeyedArchiverIOS 使用 NSKeyedArchiver 保存关联数组
【发布时间】:2015-07-22 07:37:12
【问题描述】:

我想使用NSKeyedArchiver 保存NSObject 并保存它的关联NSArray

一个用户有很多技能(不超过 6 或 7 个)。技能是 NSObjectsNSArrayNSCoding 协议,在用户模型中

//User.h
@property (strong, nonatomic) NSArray *skills;

是否将用户和技能分别保存在 2 个不同的.plist 文件和使用用户 ID 检索的技能中?或者 initWithCoderdecodeWithCoder 方法中是否包含技能数组?

【问题讨论】:

    标签: ios plist nscoding nskeyedarchiver


    【解决方案1】:

    符合NSCoding 协议的对象可以使用NSKeyedArchiver 类保存到(和读取)文件。

    NSCoding

    许多常见的Objective-C 类已经符合NSCoding。您可以保存任何这些类型的对象,而无需执行任何特殊操作:

    NSArray NSData

    NSDate

    NSDictionary

    NSNumber

    NSString

    如果您不确定某个类是否支持NSCoding,请查看其类文档。

    对于自定义类,您必须将 encodeWithCoder: 和 initWithCoder: 方法添加到您的类中以符合NSCoding 协议。

    Here you can get what you are looking for

    【讨论】:

    • 谢谢,我知道这些类型是可以保存的。我的问题是面向的:如何在符合 NSCoding 的类中保存符合 NSCoding 的 NSObjects 数组?是否有 2 个完全独立的实体是您单独保存的,还是在一次调用中保存的?
    • 单次调用是什么意思?
    • 我的意思是,技能数组不是用户模型中 encodeWithCoder: 和 initWithCoder: 方法的一部分,对吧?有一个 Users.plist 和一个 Skills.plist 所以模型应该分开保存。应使用用户 ID 字段检索技能。没有?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多