在用於核心數據棧生成的代碼,保存上managedObjectContext問題被稱爲在applicationWillTerminate方法。這是在退出前處理上下文中所有未保存的對象。與xcode中生成的核心數據棧代碼邏輯和核心數據樣本代碼
這也有保存任何臨時對象的不良副作用。 (這個問題在蘋果示例代碼中也是可見的,如果您點擊+在食譜示例代碼中添加新食譜,然後按主頁按鈕以終止該應用程序,則下次啓動該應用程序時會看到半分食譜對象)。
處理此問題的首選設計模式是什麼?我可以想到以下幾點。
- 對臨時對象使用不同的暫存器managedObjectContext,當您決定真正保存時,然後在主managedObjectContext中推送副本。僅在applicationWillTerminate中的主managedObjectContext上調用保存。 (有沒有簡單,快捷的方式從一個managedObjectContext在新的上下文手動創建副本將對象移動到另一個分開?)
- 刪除applicationWillTerminate保存,但要確保所有的對象都保存更改後立即。 (這可能並不容易,我有一個Tabbed應用程序,用戶可能同時啓動編輯操作)。
讓我知道是否有更好的方式來處理這個問題。
這是絕對是更新更新的更好方法,因爲CD可以完成集成更改的所有工作。 – siasl 2011-01-12 14:05:43
請參考addViewController中的註釋:(AddViewController *)控制器didFinishWithSave:(BOOL)保存在CoreDataBooks示例的RootViewController.m中,以獲取上述詳細說明。 – siasl 2011-01-12 14:06:26