为什么核心数据不会持久保存到磁盘?

Why would core data not persist to disk?

我有一个使用核心数据并在数据更改时定期成功写入磁盘的应用程序。对于大多数用户来说,这绝对没问题。

然而,一个人发现他们可以使用该应用程序几个小时,直到他们关闭该应用程序并再次打开它时,他们才发现没有任何保存。

没有错误,没有崩溃。该应用程序继续完全可用。它只是没有将任何内容保存到磁盘。

当他们继续使用该应用程序时,同样的事情发生了,它不会将任何内容保存到磁盘。当那个人简单地重新启动他们的 phone.

时,这个问题实际上自行解决了(没有代码更改)

我想知道这是否是磁盘 space 问题?该应用程序在他们的 phone 上大约有 170mb,他们有大约 300mb 的免费空间 space。

我愿意接受这里的任何建议。就个人而言,我宁愿让应用程序崩溃,也不愿让某人一次继续使用它几个小时,而他们却没有意识到没有任何内容保存到磁盘。

我正在使用 Magical Record 来实现我的核心数据。

我之前使用 MR_saveToPersistentStoreAndWait,现在切换到 MR_saveToPersistentStoreAndWaitWithError。但我什至不知道要检查什么,因为我不知道它是否引发错误。

虽然我不能确定我是否在报告该问题的用户设备上重现了该问题。我能够重现我的应用程序将继续运行的场景——但不会将任何内容保存到磁盘。

我是通过手动创建一个不符合实体模型验证规则的对象来做到这一点的。

当试图保存上下文时,它吐出一个错误,但应用程序继续运行,就好像没有问题一样。