ios - 跳过核心数据迁移

标签 ios core-data data-migration

我对我的核心数据模型做了很多更改。过去我们使用的是简单的自动迁移。然而这一次将会失败。因为我真的不关心正在迁移的数据,所以我只想在自动迁移失败时删除持久存储并重新设置它。这是一个有效的方法吗?有什么我必须小心的吗?这会让我的应用被拒绝吗?

最佳答案

这样做肯定会出现一些问题,您需要小心。 This answer从 NSManagedObjectContext 的文档中得到了一些很好的建议

A context always has a “parent” persistent store coordinator which provides the model and dispatches requests to the various persistent stores containing the data. Without a coordinator, a context is not fully functional. The context’s coordinator provides the managed object model and handles persistency. All objects fetched from an external store are registered in a context together with a global identifier (an instance of NSManagedObjectID) that’s used to uniquely identify each object to the external store.

当我们的一个应用程序遇到类似的情况时,我选择创建一个新的持久存储,并弃用旧的存储,因为我们的旧存储由于之前的错误迁移而在许多设备上被搞乱了。最终的转变比我预想的要困惑,但它确实有效。

你的计划中的问题并非无法克服,我只是建议谨慎行事。我喜欢 Giao 关于使用 NSManagedObjectContext 重置的建议。当删除和重建时,持久存储协调器可能会感到困惑。我很担心,因为苹果似乎在幕后做了很多事情。我还担心,因为似乎核心数据在已发布的应用程序上的行为与我们的调试版本上的行为不同,尤其是在升级过程中。

我认为您很聪明地认识到您的自动迁移将会遇到麻烦,并且您正在寻找另一条路径。最近,我看到一个团队确实不得不忙于一个月来处理其应用程序中失败的数据迁移。

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

相关文章:

ios - 检查互联网连接 iOS 应用程序

android - 在针对 android 和 ios 时最大化代码重用的最佳实践是什么

ios - 仅在节省时间时触发 NSFetchedResultsController?

用于数据迁移的 Hadoop

ios - FCM 和 iOS - 仅在切换到前台或重新打开应用程序时收到消息

ios - 快速录音和桌面 View 显示

ios - textview 在/n 之后添加新文本与 textview.textAlignment 不匹配

iphone - 将 iPad 应用程序中的文本数据保存为可以从 "notes app"打开的注释?

core-data - 无法解决,“无法合并具有两个不同名称的实体的模型”

SQL 迁移脚本 - 嵌套循环