我有一个应用程序,该应用程序进行了许多核心数据迁移,有多个开发人员在该项目上工作,有一次似乎无法正确迁移核心数据模型。最终结果是,从特定版本的应用程序升级到当前应用程序版本的人无法将其上下文保存到商店中(此保存发生在应用程序进入后台时)。

记录的错误如下:

This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.


幸运的是,用户不太可能从崩溃和错误中注意到太多,因为崩溃和错误是在应用程序退出期间发生的,并且该应用程序旨在仅从网络上检索本地丢失的任何数据,因此失败的保存不像如果有任何用户创建的数据丢失。当然,这不是理想情况,因为必须重新下载尚未在应用程序出口保存到商店的数据。

我的问题最终是我该如何解决该问题?

我的想法是发布一个较小的更新,以完全重置核心数据持久性模型。清除所有旧数据存储,然后重新开始(请记住所有数据均来自服务器)。用户不会丢失任何数据,这将解决未来的问题。有更好的主意吗?

另外,如果那是我决定做事的方式,那么我将如何正确正确地做呢?我是否只需查看我的捆绑包并删除任何.momd文件,然后用不同的名称重新创建一个新文件?还是删除不必要的内容,而仅仅给出新的名称会带来理想的结果?

最佳答案

要完全重置,您可以在applicationDidFinishLaunching中添加支票:


检查用户默认设置中的标志,该标志指示您已迁移
如果未迁移,请删除当前存储文件
将标志设置为用户默认设置,这样以后就不会再次“升级”
就是这样,打开商店并下载所需数据


修理:


从您的第一个版本开始,逐步检出每个版本并运行它,直到发现问题为止
找到问题后,找出哪个迁移不好-导致崩溃的原因
修复迁移(非常取决于迁移是什么,请问一个新问题...)

关于ios - 先前的核心数据迁移失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18449279/

10-11 04:34
查看更多