我在我的项目中使用核心数据,我要用户填写的表格保存到核心数据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