繁体   English   中英

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

[英]CoreData: How do you migrate an unversioned store?

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM