iOS CoreData Xcode8 数据库升级迁移 (Obj
2017-09-12 本文已影响50人
Yuency
前言
项目升级 项目以前使用的是 CoreData, 现在表里面需要新增加一个字段, 或许不仅仅是增加字段这么简单.
我们先简单玩一下数据库
第 1 步
新建一个工程,这里我先不勾选 CoreData 选项,进入工程之后再添加.

第 2 步

第 3 步

第 4 步

第 5 步
这时候生成完了的类直接编译是报错的

第 6 步
解决报错, 然后重新生成一下这些类

第 7 步
重新生成之后再编译

第 8 步
我发现现在生成的类的名字和之前使用 Xcode7生成的不一样啊. 去百度了一下. 这个是可以改名字的. 直接改文件名就可以, 同时记住改里面的 #import ""

第 9 步
在 viewDidLoad 里面添加如下代码
然后 Command + R, 就可以愉快玩耍了

我们再简单升级一下数据库
第 1 步
App迎来了下一个版本,演员表里面的演员新增了一个字段 "info", 这时候需要做升级处理,否则可能造成崩溃.

第 2 步

第 3 步
在右侧窗口选择数据库的版本

第 4 步
在新数据库模型的实体里面增加属性

第 5 步
把原来的生成的类都删掉,然后老方法重新生成一次.

第 6 步
生成完了之后可以改个名字

第 7 步
添加一个字典,为了配合数据库升级,然后在新字段中写点数据,如下图:
Command + R, 再玩一次

第 8 步
效果图:

关键代码:
NSDictionary *optionsDictionary = @{NSMigratePersistentStoresAutomaticallyOption: @YES, NSInferMappingModelAutomaticallyOption: @YES};
讲真,MarkDown 里面插入代码段很难用.
后续
附上我曾经拜访过的文章
iOS CoreData介绍和使用(以及一些注意事项)