0

我有一个采用协议的简单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.

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

非常感谢您的帮助!

4

1 回答 1

0

@IraniyaNaynesh 对问题的评论中的建议是红鲱鱼。

答案很简单。decodeObject方法中decodeInteger的更改和数据从 SQLite 数据库中init?(coder aDecoder: NSCoder)恢复成功保存和已成功保存的 。BLOBS nil

于 2018-06-11T14:24:57.977 回答