从saveContext中的Core Data错误中恢复

Ove*_*esh 6 cocoa-touch core-data objective-c ios

在支持Core Data的iOS应用程序中,为app delegate生成的代码包含该saveContext函数,其中注释建议替换abort()为代码以从错误中恢复.

是否有一些标准样板(即非特定于应用程序)的代码可以从这种错误中实际恢复?

我正在考虑从Core Data中删除所有数据.那会有帮助吗?它会覆盖任何类型的错误吗?

最后,我该如何测试此恢复代码?

Eim*_*tas 2

本身没有样板代码,但通常指南建议向用户显示错误消息(最有可能带有UIAlertView)。通常,当存在无效对象(具有未设置的非可选属性)以及一个对象具有两个版本(当在一个上下文中创建对象并在另一个上下文中“刷新”对象时会发生这种情况)时,上下文保存会失败。前一种情况要求显示验证错误,并让用户有机会在执行保存的同一屏幕中修复这些错误。后一种情况具有 CoreData Cookbook 中讨论的后台合并技术(采用删除对象的一个​​版本或合并更改)。

另外根据我的经验,我认为 AppDelegate 中的上下文保存并不需要太多。我建议为对象创建创建单独的上下文,并让应用程序委托仅将初始 MOC 传递到rootViewController窗口。