崩溃前保存核心数据上下文

Posted

技术标签:

【中文标题】崩溃前保存核心数据上下文【英文标题】:Saving Core Data Context before Crashing 【发布时间】:2013-03-04 20:14:28 【问题描述】:

例如,如果我们在 XCode 中点击“停止”,它将关闭应用程序,模仿崩溃行为。

但是如果我的核心数据上下文没有保存,当我返回时,数据将不存在。

    是否有任何解决方法?

    是否应该在每次大操作完成时保存上下文?

谢谢。

【问题讨论】:

【参考方案1】:

根据我的经验,您应该在使用 Core Data 保存机制时确定正确的粒度。

恕我直言(也许其他人可能有不同的意见)没有可遵循的标准。我的经验法则是考虑两个不同的方面。 用户表现

在第一种情况下,您应该在用户执行关键操作时保存。例如用户在表单中插入了很多值,因此他希望不再插入它们。关于第二个方面,保存操作可能会影响应用程序的性能。如果您经常将更改写入磁盘,则应用程序的响应速度会降低。相反,内存中有这么多对象可能会导致内存警告(这会导致 Core Data 采取特定的行为)。

权衡可能是使用后台操作来保存更改或利用新的 Core Data API。显然,以前的规则仍然有效。

【讨论】:

嗯.. 有道理。感谢您的洞察力。

以上是关于崩溃前保存核心数据上下文的主要内容,如果未能解决你的问题,请参考以下文章

核心数据保存竞争条件错误

删除后尝试保存时核心数据崩溃

核心数据和多线程在保存时崩溃

(Swift 3) 父子上下文崩溃核心数据 (libc++abi.dylib: 以 NSException (Recorded Frame) 类型的未捕获异常终止)

iPhone - 核心数据崩溃 - 多个托管对象上下文

托管对象上下文作为单例?