我们的应用已在应用商店发布,现在我想在下一版本上工作。在这里,我可能会将属性和实体添加到当前模型中。
我正在使用具有魔法记录的核心数据。
我需要有关核心数据迁移的帮助,并带有神奇的记录。
我已经在app delegate中使用 [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@" xxxxxxx"]; 。
根据我的理解,如果我们使用上述方法,MR将负责迁移。
我是否需要在 Model.xcdatamodeld 中进行任何更改,例如添加模型版本(编辑器 - >添加模型版本)。
请帮助我如何迁移核心数据。
答案 0 :(得分:10)
当您的应用程序包中有多个版本的数据模型时,该方法只会启用自动迁移。要添加新版本的数据模型,您需要在Xcode中选择数据模型,然后在菜单中选择编辑器 - >添加模型版本......从那里,Xcode将为您进行正确的设置。这也是一个相当简单的想法,它创建了一个新的数据模型文件,它以当前数据模型文件的内容开始。从那里,您可以根据需要更改和编辑数据模型。请注意,只有简单的更改才是“自动的”。如果新属性具有默认值,则添加新属性是有效的。添加新实体也属于自动类别。我建议您阅读有关Core Data Migrations from Apple's Official Documentation
的更多详情答案 1 :(得分:10)
建立在@casademora回答的基础上,谁比我更了解MR,这里有适合我的东西。关键是按照建议阅读Apple文档。
突出显示您现有的.xcdatamodel,然后点击编辑器>添加模型版本>使用之前的增量命名(例如,如果“myapp”使用xcode中建议的“myapp 2”。
对新创建的.xcdatamodel进行更改。
突出显示父.xcdatamodel,然后在xcode右侧的File Inspector上选择您的新版本作为当前的模型版本。
注意:仅当执行Lightweight Migration以上时才需要执行此步骤。选择文件>新>文件>核心数据>映射模型。选择原始作为源,新作为目标,然后保存在与.xcdatamodel相同的文件夹中。
确保您正在使用setupAutoMigratingCoreDataStack或setupCoreDataStackWithAutoMigratingSqliteStoreNamed当然
通过从应用商店下载应用并打开它进行测试,然后关闭并在顶部运行调试。你不应该得到任何“删除不兼容的模型版本”消息(即所有持久数据应该仍然存在)或任何其他错误。