【问题标题】:Does merge model can work with light data migration?合并模型是否适用于轻量数据迁移?
【发布时间】:2011-05-13 07:44:21
【问题描述】:

这个问题困扰着我很多,并尝试寻求帮助。我知道这是一个老问题,但我仍然找不到解决方案。

在我的应用程序中,我尝试使用 modelByMergingModels 将我的所有数据模型收集为一个,然后传递给 persistentStoreCoordinator。一切都很好,直到我需要实施数据迁移以防万一将来更改数据模型。

这是我执行的步骤。 1. Design-Add modal 版本创建新数据 2.添加一个新属性,SAVE 3.在addPersistentStoreWithType方法中添加轻量数据迁移选项字典 4.运行程序并得到错误。 “找不到源存储的模型”;

但是,如果我将 managedObjectModel 访问器更改为仅初始化一个数据模型并摆脱 modelByMergeingModels 或 mergeModelFromBundles。它只是工作。

所以我的问题是,当我使用合并模型或 mergeModelFromBundles 时,数据迁移是否有效?

如果我有多个数据模型并尝试实施数据迁移,最好的方法是什么。

希望这个问题有意义。非常感谢

【问题讨论】:

  • 你能解决这个问题吗?

标签: iphone core-data migration


【解决方案1】:

这是当前 Core Data 中的一个错误。请打开http://bugreport.apple.com 的雷达,以便 Apple 知道更多人遇到此问题。

至于解决方法,我不知道,但是您可以尝试单独迁移模型。

【讨论】:

  • 感谢您的回复。我将尝试单独迁移模型。
【解决方案2】:

合并模型不适用于轻量级数据迁移。

来自 Apple 文档:

要执行自动轻量级迁移,Core Data 需要能够找到源和目标托管对象模型自身在运行时

如果您使用+modelByMergeingModels:,则将其用于目标模型。但是 Core Data 将无法找到源模型。源模型已在旧版本的应用程序中使用 +modelByMergeingModels: 创建,Core Data 确实尝试合并模型以找出源模型。

我最终做的是,我(手动)通过编辑模型的 XML 文件创建了一个新的合并 .xcdatamodeld,将其添加到项目中,从编译源中删除了单独的 .xcdatamodelds,而不是使用 +modelByMergeingModels: 使用 NSManagedObjectModel-initWithContentsOfURL: 和新合并模型的 URL。我可能会创建一个脚本,将来会自动合并模型。

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多