我有一个简单的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
。
我在这里遗漏了什么吗?为什么这个属性没有成功保存?这似乎是其他帖子所需的全部内容。
非常感谢您的帮助!
答案 0 :(得分:0)
@IraniyaNaynesh在问题评论中提出的建议是红鲱鱼。
答案结果很简单。在decodeObject
方法中将decodeInteger
更改为init?(coder aDecoder: NSCoder)
,数据将恢复{{1>},不 BLOBS
并已保存成功地,来自SQLite数据库。