我在我的項目中使用核心數據,我要用戶填寫的表格保存到核心數據DB。用戶重新啓動應用後,保存的表單列表應顯示在TableView中。但是,如果用戶在Core Data提交更改之前退出應用程序,則表單不會被保存。有什麼辦法來捕捉我的數據被提交的時刻嗎?核心數據提交通知
這是我如何保存表單:
if (![document.managedObjectContext save: &error]) {
NSLog(@"DB saving error!");
}
else {
NSLog(@"DB save OK!");
//show alertView
}
我試圖跟蹤核心數據使用-com.apple.CoreData.SQLDebug 1
提交的時刻。日誌顯示它在約15秒後開始保存對象。
// This is how my log output looks like
2012-08-03 14:50:43.587 iPadAF_new[4506:707] DB save OK!
2012-08-03 14:50:58.628 iPadAF_new[4506:2597] CoreData: sql: COMMIT
那麼我怎麼才能得到提交後的通知或東西,所以用戶將無法退出應用程序,直到保存?
它似乎並不像你對我應該知道什麼時候提交發生。在保存發生之前系統是否會殺死你的應用程序,或者你是從Xcode中殺死它? – 2012-08-03 12:14:37
比方說用戶決定立即終止該應用後,他/她看到了有關全成警報保存 – NikGreen 2012-08-03 12:19:43
坦率地說,你不知道你有一個問題 - 你只是擔心你可能有一個。我可以建議您在真實手機上運行測試用例,按照您的說法執行操作 - 按住主界面按鈕並儘快終止應用程序 - 然後查看重新啓動數據時是否缺失。我懷疑它會正常工作 - 當「保存」成功返回時,蘋果將確保數據實際上已被保存。如果它不是一個嚴重的Apple錯誤。另外,你是否真的認爲用戶會放棄所有的應用程序?也許開發人員做的只是「普通」用戶不這麼做(他們可能會切換到不同的應用程序)。 – 2012-08-03 13:23:29