App Store中已发布应用的神奇记录,核心数据迁移

时间:2014-04-03 08:06:32

标签: ios iphone core-data magicalrecord

我们的应用已在应用商店发布,现在我想在下一版本上工作。在这里,我可能会将属性和实体添加到当前模型中。

我正在使用具有魔法记录的核心数据。

我需要有关核心数据迁移的帮助,并带有神奇的记录。

我已经在app delegate中使用 [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@" xxxxxxx"];

根据我的理解,如果我们使用上述方法,MR将负责迁移。

我是否需要在 Model.xcdatamodeld 中进行任何更改,例如添加模型版本(编辑器 - >添加模型版本)。

请帮助我如何迁移核心数据。

2 个答案:

答案 0 :(得分:10)

当您的应用程序包中有多个版本的数据模型时,该方法只会启用自动迁移。要添加新版本的数据模型,您需要在Xcode中选择数据模型,然后在菜单中选择编辑器 - >添加模型版本......从那里,Xcode将为您进行正确的设置。这也是一个相当简单的想法,它创建了一个新的数据模型文件,它以当前数据模型文件的内容开始。从那里,您可以根据需要更改和编辑数据模型。请注意,只有简单的更改才是“自动的”。如果新属性具有默认值,则添加新属性是有效的。添加新实体也属于自动类别。我建议您阅读有关Core Data Migrations from Apple's Official Documentation

的更多详情

答案 1 :(得分:10)

建立在@casademora回答的基础上,谁比我更了解MR,这里有适合我的东西。关键是按照建议阅读Apple文档。

  1. 突出显示您现有的.xcdatamodel,然后点击编辑器>添加模型版本>使用之前的增量命名(例如,如果“myapp”使用xcode中建议的“myapp 2”。

  2. 对新创建的.xcdatamodel进行更改。

  3. 突出显示父.xcdatamodel,然后在xcode右侧的File Inspector上选择您的新版本作为当前的模型版本。

  4. 注意:仅当执行Lightweight Migration以上时才需要执行此步骤。选择文件>新>文件>核心数据>映射模型。选择原始作为源,新作为目标,然后保存在与.xcdatamodel相同的文件夹中。

  5. 确保您正在使用setupAutoMigratingCoreDataStack或setupCoreDataStackWithAutoMigratingSqliteStoreNamed当然

  6. 通过从应用商店下载应用并打开它进行测试,然后关闭并在顶部运行调试。你不应该得到任何“删除不兼容的模型版本”消息(即所有持久数据应该仍然存在)或任何其他错误。