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

Objective c 核心数据版本控制-需要多个映射模型,objective-c,ios,core-data,core-data-migration,Objective C,Ios,Core Data,Core Data Migration,我有一个使用核心数据的现有项目,在我的xcdatamodeld包中有3个版本。到目前为止,我只使用了轻量级迁移,因为我主要添加了新参数和实体,但是现在我希望将现有参数移动到新实体中。我意识到我必须使用映射模型来实现这一点,以便在参数之间迁移数据 我猜想有一些用户使用非常旧的应用程序版本,使用模型的版本1,还有一些用户使用版本2和版本3 问题: 我是否需要创建从所有现有版本到新版本的映射模型,还是仅从最新版本创建映射模型 是否需要更改/禁用我的NSPersistentStoreCoordinato

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

我猜想有一些用户使用非常旧的应用程序版本,使用模型的版本1,还有一些用户使用版本2和版本3

问题:

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

    NSMigratePersistentStoresAutomaticallyOption

    nsinfermappingmodelautomaticalyOption

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

    谢谢

  • 只是从最新的版本
  • 没有
  • 迁移是连续的(这就是为什么您需要保持所有模型版本都存在的原因,即使预期不会从第一个版本进行迁移)


    NSMigratePersistentStoresAutomaticallyOption
    仅在不存在映射模型的情况下才会执行自动迁移。

    也许我不确定,但您从哪里获得的信息,迁移是连续的?轻量级迁移只会尝试在momd文件中从当前存储模型更新到当前模型。如果是远程版本与轻量级不兼容,并且您只有last-1到last的映射模型-它不会自动对旧版本工作!抱歉,不称职,不是“不确定”。我不是母语人士。好吧,这是假设的(苹果的设置也是如此)您无法确定模型的最早版本是什么。因此,包含所有版本是最安全的,也因为它几乎不消耗任何资源,所以没有理由不包含所有版本。是的,当然,您必须包含所有模型,但我要说的是,只需包含所有模型并运行“addPersistentStoreWithType:…”不会自动调用迁移1-2、2-3、3-4等。它会尝试从1迁移到当前的1-4,如果无法执行轻量级迁移,则会失败。我刚刚实现了这一点,并且必须从每个可能的早期版本创建映射模型。