我想在Swift中製作一個天氣應用程序,它將保存我添加到核心數據中的城市,每個城市都包含一個天氣對象,該對象也保存到核心數據和其他各種變量中。我很快就發現,在覈心數據上下文之外使用核心數據NSManagedObjects子類幾乎是不可能的(處理NSNumber和類似的問題,沒有自定義的初始化,被迫將它們保存在某處,如果我明天停止使用核心數據, ...)。如何在Core Data上下文之外使用Core Data模型子類?
那麼,繼續使用核心數據的最佳做法是什麼,但是還要在上下文之外使用模型?
我的解決方案,現在是創建一個類爲每個型號,所以:
class City
{
var country: String?
var name: String?
// ...
}
是對應的類:
class CD_City
{
@NSManaged var country: String?
@NSManaged var name: String?
// ...
}
所以我可以用City
任何地方,反正我想要的。但我需要一個func將City
變成CD_City
和相反。所以我真的不確定我是否是最好的方法。 另外你會推薦什麼樣的轉換方法?
(FYI我使用MagicalRecord作爲核心數據助手)
所以也不推薦我的解決方案?例如,你如何在ViewController中使用你的模型?我的意思是,在我的情況下,我想根據用戶的位置創建一個城市,但我不想將它保存到Core Data,根據你我是不行的? – allbto
CD從頭開始設計以管理自己的物體及其創作。請不要使用核心數據,或者將您的對象作爲協議傳遞到控制器中。您的CD實體可以實現該協議,因爲可以使不在CD中的「啞」對象,並且您的控制器將不知道其差異。我鼓勵你重新審視哪些需求導致你使用CoreData - 可能有另一種持久性機制可以滿足你的需求,並且沒有CD的包袱。 – RyanR
我花了很長時間才找到這個鏈接:[YAPDatabase](https:// github。com/yapstudios/YapDatabase)非常好。 – RyanR