我使用CoreData來管理我的應用程序數據模型。我在編輯視圖控制器中使用子管理的對象上下文,以便我們可以保存或放棄用戶所做的更改。如何保存臨時NSManagedObjectContext而不將其保存到父上下文
我創建子上下文如下:
NSManagedObjectContext* mainMoc = <my main context>;
NSManagedObjectContext* editMoc = [[NSManagedObjectContext alloc] init];
editMoc.parentContext = mainMoc;
如果用戶點擊「完成」按鈕,我保存更改如下:
[editMoc save:&error]
如果用戶點擊「取消」我只是放棄editMoc上下文。
這裏是問題: 我在整個應用程序中使用狀態保存和恢復,並且我想在應用程序轉到後臺時將editMoc上下文與更改一起保存以進一步恢復。我不想將editMoc和mainMoc合併,因爲用戶並沒有決定是保存還是放棄更改。
我嘗試使用NSCoding協議來序列化editMoc,但註冊的對象不以這種方式保存。 我也嘗試更改parentContext,但是這會引發異常。
我相信應該有一個很好的方法來完成上述任務,因爲使用子上下文和狀態保存是一種常見的做法。
我的項目運行在iOS 6.0及以上版本。