我的應用程序有時會將對象插入托管對象上下文中,這些對象不一定需要保存。例如,當我啓動一個'添加實體'模式時,我創建一個託管對象並將其分配給模態。如果用戶保存該模式,我保存上下文。如果他取消,我刪除該對象,不需要保存。對NSManagedObjectContext的併發更改 - 如何以及何時保存
我現在已經引入了一個'導入'功能,切換到我的應用程序(使用URL方案)並添加一個實體。因爲這些模式中的一個可能是開放的,所以在這一點上保存上下文是不安全的。爲模式創建的瞬態對象將被保存,即使用戶取消,也無法保證刪除(從取消操作)將在以後保存 - 用戶可能會退出應用程序。
同樣,我不能簡單地保存每當我的應用程序退出。如果該模式在此時打開,則臨時對象將被錯誤地保存。
我正在尋找處理此架構的策略。我正在考慮一些「標記」解決方案,它允許我識別導入的實體。當用戶用戶退出應用程序時,我會檢查上下文是否存在未保存的更改。如果是這樣,我會過濾除導入的實體以外的所有內容,然後保存。我不知道這是可能的(選擇性儲蓄)還是一個好主意。
聽起來像你的模態應該使用單獨的上下文,這將允許您保存主要上下文,而不會意外地從模態中獲取正在進行的更改。 –
偉大的文章在這裏:http://www.cocoanetics.com/2012/07/multi-context-coredata/關於使用不同的scanarios包括你所描述的一個孩子上下文。 –
謝謝你們 - 我已經閱讀過幾次鏈接的博客,正在嘗試實施。我有一些問題,但到目前爲止,感覺就像是正確的道路。我將在工作時添加自己的答案,詳細說明我的解決方案。 –