Ios 以前的核心数据迁移失败

Ios 以前的核心数据迁移失败,ios,core-data,core-data-migration,Ios,Core Data,Core Data Migration,我有一个应用程序进行了多次核心数据迁移,有几个开发人员在项目中工作,有一次似乎无法正确迁移核心数据模型。最终结果是,从特定版本的应用程序升级到当前版本的应用程序的用户无法将其上下文保存到应用商店(此保存在应用程序进入后台时发生) 记录的错误如下所示: This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation. 幸运的是,用户不太可能从这个崩溃和错误中注意到太多,因

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

记录的错误如下所示:

This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.
幸运的是,用户不太可能从这个崩溃和错误中注意到太多,因为它发生在应用程序退出期间,应用程序的设计目的是简单地从web检索本地丢失的任何数据,因此失败的保存不像丢失任何用户创建的数据那样重要。当然,这并不理想,因为在应用程序退出时必须重新下载未保存到存储中的数据

我最终的问题是,我如何着手解决这个问题

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


另外,如果这就是我决定做事情的方式,那么我应该如何正确地去做呢?我是否只需查看我的包并删除任何.momd文件,然后用不同的名称重新创建一个新文件?或者删除是不必要的,仅仅给出新的名称就可以得到所需的重用结果

要完全重置,您可以在
ApplicationIDFinishLaunching
中添加一个检查:

  • 检查“用户默认设置”中是否有指示您已迁移的标志
  • 如果未迁移,请删除当前存储文件
  • 在用户默认设置中设置标志,以便以后不再“升级”
  • 就这样,打开商店并下载所需的数据
  • 要修复:

  • 从第一个版本开始,逐步检查每个版本并运行它,直到发现问题
  • 一旦发现问题,请找出哪种迁移不好——是什么导致了崩溃
  • 修复迁移(很大程度上取决于迁移是什么,问一个新问题…)

  • 为什么不直接修复坏的迁移呢?这是一个有效的问题。也许这就需要一个单独的问题。但是,我很难确定错误迁移来自哪个版本。你能给我一些关于检测这个的建议吗?修复这个糟糕的迁移会比我提出的解决方案更容易吗?我该如何修复一个错误的迁移?您正在使用版本控制?因此,您可以从第一个版本开始,逐步检查每个版本并运行它,直到找到问题。一旦发现问题,我将如何着手解决它?对不起,我的noob问题,除了普通的轻量级迁移之外,我没有任何经验。大概需要下载多少数据才能开始清理?10kB?100Kb?1MB?我实施了您建议的“完全重置”解决方案,似乎完全解决了我的问题。明显的缺点是每个人的存储文件都会被重置(即使是工作文件)。在进行将来的迁移时,我将更加谨慎。