从 saveContext 中的核心数据错误中恢复

Posted

技术标签:

【中文标题】从 saveContext 中的核心数据错误中恢复【英文标题】:Recovering from a Core Data error in saveContext 【发布时间】:2011-09-16 05:09:17 【问题描述】:

在支持 Core Data 的 ios 应用程序中,为应用程序委托生成的代码包含 saveContext 函数,cmets 建议将 abort() 替换为从错误中恢复的代码。

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于从 saveContext 中的核心数据错误中恢复的主要内容,如果未能解决你的问题,请参考以下文章

ios核心数据未保存

从 Qt 中的错误中恢复

从众多实体中恢复一个获取的实体——核心数据

Swift - saveContext()、tableView、scrollView 和 reloadRows 问题?

应用从后台恢复时核心数据实体消失

Rider 无法在 mac 上恢复 dotnet 核心包