【问题标题】:iOS (Swift): Core data transformable attributesiOS (Swift):核心数据可转换属性
【发布时间】:2018-11-20 02:03:39
【问题描述】:

我有一个简单的Time 类,它采用NSCoding 协议:

class Time: NSObject, NSCoding {

    var hours: Int

    func encode(with aCoder: NSCoder) {
        aCoder.encode(self.hours, forKey: "hours")
    }

    public required init?(coder aDecoder: NSCoder) {
        guard let hours = aDecoder.decodeObject(forKey: "hours") as? Int
            else { return nil }
        self.hours = hours
    }

    init(hours: Int) {
        self.hours = hours
    }

}

我想成为Transformable 实体的Watch 属性:

final class Watch: NSManagedObject {
    @NSManaged public fileprivate(set) var time: Time
}

如图所示:

我成功地将它保存到托管对象上下文,但是当我重新加载应用程序时,time 属性是nil

我在这里遗漏了什么吗?为什么这个属性没有成功保存?这似乎是其他帖子所需的全部内容。

非常感谢您的帮助!

【问题讨论】:

    标签: ios swift core-data nscoding transformable


    【解决方案1】:

    @IraniyaNaynesh 问题的 cmets 中的建议是红鲱鱼。

    答案很简单。将init?(coder aDecoder: NSCoder)方法中的decodeObject改成decodeInteger,数据从SQLite数据库中恢复了BLOBS,这不是nil已经保存成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-30
      • 2018-02-10
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多