在支持Core Data的iOS应用程序中,为app delegate生成的代码包含saveContext
函数,评论建议将abort()
替换为代码以从错误中恢复。
是否有一些标准样板(即非特定于应用程序)的代码可以从这种错误中实际恢复?
我正在考虑从Core Data中删除所有数据。那会有帮助吗?它会覆盖任何类型的错误吗?
最后,我该如何测试此恢复代码?
答案 0 :(得分:2)
本身没有样板代码,但通常指南建议向用户显示错误消息(最有可能是UIAlertView
)。当存在无效对象(具有未设置的非可选属性)以及具有两个版本的一个对象时,通常上下文保存失败(当在一个上下文中创建对象而在另一个上下文中“刷新”时发生这种情况)。前一种情况需要显示验证错误,并让用户有机会在执行保存的同一屏幕中修复它们。后一种情况具有CoreData cookbook中讨论的后台合并技术(使用删除对象的一个版本或合并更改)。
另外根据我的经验,我会说AppDelegate中的上下文保存不需要太多。我建议为对象创建创建单独的上下文,并仅保留app delegate以将初始MOC传递给窗口的rootViewController
。