天天看点

《Core Data应用开发实践指南》一3.2 添加模型版本

本节书摘来自华章出版社《core data应用开发实践指南》一书中的第3章,第3.2节,作者 (美)tim roadley,更多章节内容可以访问云栖社区“华章计算机”公众号查看

为了不使应用程序像图3-1那样崩溃,我们需要在修改模型之前先创建新的模型版本。添加新模型之后,就不应该再删除旧版的模型了。旧的模型有助于把原来的持久化存储区迁移到当前的模型版本。假如用户的设备上原来就没有持久化存储区,那么可以先不考虑模型版本控制问题,等到应用程序在app store上架之后再说。

请按下列步骤修改grocery dude,以便添加模型版本:

选中model.xcdatamodeld。

点击editor>add model version...菜单项。

点击finish按钮,将model 2用作版本名称。

现在项目中应该会有两个版本的模型了,如图3-2所示。

《Core Data应用开发实践指南》一3.2 添加模型版本

model 2.xcdatamodel这个新模型的内容一开始便与model.xcdatamodel完全相同,而开发者不经意间就会在错误的模型版本上进行修改。所以,为了防止这一情况,在编辑模型之前,应再三检查你所选定的模型是不是自己要编辑的那个版本。应该养成抓取快照的习惯,甚至可以在编辑模型之前把整个项目都备份起来。

《Core Data应用开发实践指南》一3.2 添加模型版本

请按下列步骤修改grocery dude,以便重新引入measurement实体:

可以在执行修改之前先抓取快照或备份整个grocery dude项目。

选定model 2.xcdatamodel。

创建名为measurement的新实体。

选定measurement实体,创建名叫abc的属性,并将其类型设为string。

添加了新版模型之后,必须将其设为当前版本(current version),然后才能使应用程序使用它。

请按下列步骤修改grocery dude,以便修改当前的模型版本:

选定model.xcdatamodeld。

点击view>utilities>show file inspector菜单项(或按“option++1”组合键)。

将current model version设为model 2,如图3-3所示。

如果想正常运行应用程序,那么我们还必须配置好迁移选项,告诉core data应该如何迁移。要是现在就去运行应用程序的话,那自然还是会发生store is incompatible(存储区不兼容)错误。