我在保存userDefaults中的一个NSManagedObject时遇到了困难,我想知道a)我应该试着做这个还是这不是一个合适的方法或者b)如果它是一个合适的方法,我怎么能得到它上班?是否可以在NSUserDefaults中保存NSManagedObject?
我在Swift 2.3中编写我的应用程序,它有一些用户默认选项,其中一个用于默认的“升降机”(如举重,例如'卧推','干净挺举'倾斜卧推“)。实际上,我将它们从枚举转换为核心数据实体,因为用户能够跟踪的每个电梯事件都是可用电梯类型之一(为此我将建立适当的关系)。
这里的扩展与性能:
extension Lift {
@NSManaged var liftName: String
@NSManaged var type: NSSet
}
,并与东西Xcode是抱怨电梯实体:
class Lift: NSManagedObject, NSCoding {
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(liftName, forKey: "liftName")
} // Super.init isn't called on all paths before returning from initializer
required init(coder aDecoder: NSCoder) {
// Initialization of immutable variable was never used, etc...
let liftName = aDecoder.decodeObjectForKey("liftName") as! String
}
}
我之前,所以我真正处理这些类型的错误令人担忧的是我是否会走上错误的道路。
我读过无数线程今晚教会了我需要编码一个对象(但不是特定的NSManagedObject)来保存它,然后在检索它时取消编码,并且我的类必须符合NSCoding和什么该协议要求。但后来我见过threads,说NSManagedObjects
应该不被存储在userDefaults
,但我不知道这是真的。
我已经花了几个小时,所以在我走得更远之前,可以/应该这样做吗?
非常感谢您的回答和替代方法,@ Paulw11。你为我节省了浪费时间的时间。 – Jim