CoreData:如何迁移无版本商店?

时间:2015-06-30 07:20:12

标签: ios macos core-data core-data-migration

所以我正在开发一个已发布给用户的项目。在我参与这个项目之前,这个项目有1.0和2.0版本,v2.0修改了核心数据的数据模型,但是这样做的人没有为数据模型添加新版本。

因此,当用户从v1.0升级到v2.0时,它将崩溃。

我现在的问题是我正在部署v3.0,如何修改我的xcdatamodel,以便v1.0和v2.0的用户可以毫无问题地升级到v3.0?

2 个答案:

答案 0 :(得分:2)

获取V1模型并为其添加与v2相同的新版本,然后添加另一个V3模型,以便最终获得具有所有三个版本的模型。这样,您应该能够使用以前任一版本的轻量级迁移,假设您的模型更改实际上将支持轻量级迁移。如果没有,那么按照@Mundi的建议进行手动迁移。如果您不再拥有源代码但是确实需要V1应用程序包的副本,则可以从V1应用程序包中恢复V1模型。你可能不得不谷歌如何做到这一点或让我知道,我将在周围寻找,因为我会在某处记录...希望这有帮助。

答案 1 :(得分:0)

唯一可行的解​​决方案似乎是在捆绑包中包含两个数据模型。 (基本上,版本控制系统会做类似的事情。)

使用第一个模型读取数据,然后“手动”将其复制到第二个模型的数据存储中(根据需要进行修改)。从那时起,仅使用第二个模型(应该对未来的更改进行版本控制)。

我会屏蔽用户界面并发出“迁移您的数据”之类的消息,以确保没有用户互动干扰此过程。