3.2 添加模型版本
为了不使应用程序像图3-1那样崩溃,我们需要在修改模型之前先创建新的模型版本。添加新模型之后,就不应该再删除旧版的模型了。旧的模型有助于把原来的持久化存储区迁移到当前的模型版本。假如用户的设备上原来就没有持久化存储区,那么可以先不考虑模型版本控制问题,等到应用程序在App Store上架之后再说。
请按下列步骤修改Grocery Dude,以便添加模型版本:
1.选中Model.xcdatamodeld。
2.点击Editor>Add Model Version...菜单项。
3.点击Finish按钮,将Model 2用作版本名称。
现在项目中应该会有两个版本的模型了,如图3-2所示。
图3-2 项目里有多个模型版本
Model 2.xcdatamodel这个新模型的内容一开始便与Model.xcdatamodel完全相同,而开发者不经意间就会在错误的模型版本上进行修改。所以,为了防止这一情况,在编辑模型之前,应再三检查你所选定的模型是不是自己要编辑的那个版本。应该养成抓取快照的习惯,甚至可以在编辑模型之前把整个项目都备份起来。
请按下列步骤修改Grocery Dude,以便重新引入Measurement实体:
1.可以在执行修改之前先抓取快照或备份整个Grocery Dude项目。
2.选定Model 2.xcdatamodel。
3.创建名为Measurement的新实体。
4.选定Measurement实体,创建名叫abc的属性,并将其类型设为String。
添加了新版模型之后,必须将其设为当前版本(current version),然后才能使应用程序使用它。
请按下列步骤修改Grocery Dude,以便修改当前的模型版本:
1.选定Model.xcdatamodeld。
2.点击View>Utilities>Show File Inspector菜单项(或按“Option++1”组合键)。
3.将Current Model Version设为Model 2,如图3-3所示。
图3-3 设定当前模型版本
如果想正常运行应用程序,那么我们还必须配置好迁移选项,告诉Core Data应该如何迁移。要是现在就去运行应用程序的话,那自然还是会发生Store is incompatible(存储区不兼容)错误。