我在保存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