objective-c - 核心数据版本控制——需要多个映射模型

标签 objective-c ios core-data core-data-migration

我有一个使用 Core Data 的现有项目,我的 xcdatamodeld 包中有 3 个版本。到目前为止,我只使用了轻量级迁移,因为我主要添加了新参数和实体,但是我现在希望将现有参数移动到新实体中。我意识到我必须创建一个映射模型来执行此操作,以便在参数之间迁移数据。

我推测有些用户使用非常旧版本的应用程序使用模型的版本 1,而其他用户使用版本 2 和 3。

问题:

  1. 我需要创建一个从所有现有版本到新版本的映射模型,还是只从最新版本创建
  2. 我是否需要更改/禁用我的 NSPersistentStoreCoordinator 上的轻量级迁移选项?目前我启用了以下选项:

    NSMigratePersistentStoresAutomaticallyOption
    NSInferMappingModelAutomaticallyOption

我认为从 v1 到 v2 再到 v3 仍然需要轻量级迁移,但是从 v3 到 v4 需要新的映射模型。我环顾四周,但找不到任何关于这一切如何发生的信息,因为大多数教程只涵盖 2 个版本。

谢谢

最佳答案

  1. 仅来自最新版本。
  2. 没有。

迁移是顺序的(这就是为什么您需要保留所有模型版本的原因,即使预计不会从第一个版本迁移。

NSMigratePersistentStoresAutomaticallyOption 将仅在不存在映射模型时执行自动迁移。

关于objective-c - 核心数据版本控制——需要多个映射模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709322/

相关文章:

ios:通过点击通知中心的消息启动检测应用程序

cocoa - NSManagedObjectContextObjectsWillChangeNotification

ios - 为什么存储对 NSManagedObject 的引用会阻止它更新?

ios - 使用 prepareForSegue : sender: or tableView: didSelectedRowAtIndexPath: 移动到另一个 View Controller

ios - 在 NSArray 中排序对象?

objective-c - UITableView 中的单元格到新 View Objective-C

ios - 未捕获的异常 'NSInvalidArgumentException',原因: 'Receiver .. has no segue'

ios - Xcode Swift appleWatch 读取应用程序 UserDefaults?

php - 将图片从 iOS 应用程序发送到 php 脚本到 mySQL DB

iphone - 像 Reeder 应用一样捏合以全屏拍照