繁体   English   中英

iOS(Swift):核心数据可转换属性

[英]iOS (Swift): Core data transformable attributes

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

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
    }

}

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

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

如下所示:

在此处输入图片说明

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

我在这里想念什么吗? 为什么此属性无法成功保存? 这似乎是其他职位所需要的。

非常感谢您的帮助!

@IraniyaNaynesh在问题注释中的建议是红色鲱鱼。

答案很简单。 更改decodeObjectdecodeIntegerinit?(coder aDecoder: NSCoder)方法和数据恢复BLOBS ,这不是 nil和已成功保存,从SQLite数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM