0

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

记录的错误如下:

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

幸运的是,用户不太可能从这个崩溃和错误中注意到太多,因为它发生在应用程序退出期间,并且应用程序旨在简单地从 Web 检索本地丢失的任何数据,因此失败的保存并不像如果任何用户创建的数据丢失了。当然,这不太理想,必须重新下载在应用退出时没有保存到商店的数据。

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

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

另外,如果这就是我决定做事的方式,我将如何正确地做这件事?我是否只需查看我的捆绑包并删除任何 .momd 文件,然后重新创建一个具有不同名称的新文件?还是删除不必要的,只是提供新名称会产生所需的结果?

4

1 回答 1

2

要完全重置,您可以在applicationDidFinishLaunching其中添加检查:

  1. 检查用户默认值中是否存在表明您已迁移的标志
  2. 如果未迁移,则删除当前存储文件
  3. 在用户默认值中设置标志,这样您以后就不会再次“升级”
  4. 就是这样,打开商店并下载所需的数据

修理:

  1. 从你的第一个版本开始,逐步检查每个版本并运行它直到你发现问题
  2. 一旦你发现问题,找出哪个迁移是不好的——是什么导致了崩溃
  3. 修复迁移(很大程度上取决于迁移是什么,提出一个新问题......)
于 2013-08-26T18:09:31.590 回答