使用 CoreData 进行双向迁移

Posted

技术标签:

【中文标题】使用 CoreData 进行双向迁移【英文标题】:Bi-directional migration with CoreData 【发布时间】:2012-06-29 17:03:28 【问题描述】:

是否有人知道是否可以使用 Core Data 进行双向迁移?例如,我想添加一个仅在较新的 ios(外部图像)支持的同时仍支持 iOS3.1 的功能。我希望做的是允许用户在使用旧设备时将数据导出到旧型号。

这可能是一场噩梦,但我只是想知道是否有人尝试过这个?

谢谢!

【问题讨论】:

【参考方案1】:

最好的方法可能是创建某种基于 JSON 或 XML 的中间数据格式,您可以将新模型输出到旧模型并写入旧模型。

或者,您可以创建一个具有新功能的数据模型和一个仅使用旧功能的数据模型,然后为每个功能打开存储协调器并以这种方式在模型之间复制内容。起初,这似乎更容易,并且实际上更多的是您所要求的,但我非常警惕在无数 Core Data 用户已经走在您之前并用他们风化的骨头铺平道路的范围之外交易太远。大多数人只有一名商店协调员;别介意两个指向不同的模型。

【讨论】:

感谢您的回复。实际上,我可以通过在两个版本之间创建数据模型映射来做到这一点。这不会自动保存外部图像,因此我必须创建一个自定义策略来处理这些图像。幸运的是,这并不像我想象的那么困难。

以上是关于使用 CoreData 进行双向迁移的主要内容,如果未能解决你的问题,请参考以下文章

RubyMotion 中 CoreData 迁移的问题

如何在 Swift 中进行轻量级 CoreData 迁移

CoreData 版本控制和阻塞轻量级迁移

Cocoa:CoreData - ManagedObjectContext 中的多个实体

Coredata 手动迁移

coredata 通过检测版本自定义迁移