2016-11-23 36 views
0

我有父母和孩子託管的上下文。我調用父管理方面,以保存其數據有兩種方法:未存儲XCode Simulator CoreData:在哪裏調用保存託管上下文?

  • applicationWillTerminate
  • applicationDidEnterBackground

當我使用模擬器,只是點擊上方「停止」按鈕,無論是被調用並且上下文沒有保存。在手機本身當然,通常使用應用程序時,一切都像魅力一樣。如果我單擊模擬器中的「Home」按鈕並返回到應用程序然後終止,那麼當然它會被保存,因爲applicationDidEnterBackground被調用。

因此,如果模擬器是正確的,或者這是模擬器的錯誤,或者我錯誤地退出模擬器,我可能必須添加其他位置來保存背景上下文。你可以幫我嗎?我是否需要改變任何東西,或者只是在模擬器中使用「技巧」來存儲數據?

+0

我認爲按下停止按鈕只會在不保存應用狀態的情況下殺死進程。 – Alex

+0

停止按鈕被視爲軟故障,這種情況在實際設備中不可重現。 – kaushal

回答

2

將數據保存在這些方法中是可以的,但它們不應該是唯一的地方。事情可能會出錯,超出你的控制範圍,並且在用戶數據丟失時最好不要丟失用戶數據。例如,當您的應用程序在內存中存在大量未保存的更改時,手機的電池可能會突然死亡。實際上,你在模擬這種情況方面做得很好。

此外,您有更多未保存的更改,應用程序需要的內存就越多。如果您保存數據,則可以隨時查看,以便核心數據可以清除其緩存,重新排列對象等。

只要存在不應丟失的新更改,就應該保存更改。究竟何時取決於您的應用程序,但它幾乎肯定不僅僅是這兩種方法。一種常見的模式是,當用戶界面表示用戶已完成某項任務時,應保存與該任務相關的數據。

相關問題