iOS CoreData Xcode8 数据库升级迁移 (Obj
2017-09-12 本文已影响50人
Yuency
前言
项目升级 项目以前使用的是 CoreData, 现在表里面需要新增加一个字段, 或许不仅仅是增加字段这么简单.
我们先简单玩一下数据库
第 1 步
新建一个工程,这里我先不勾选 CoreData 选项,进入工程之后再添加.
![](https://img.haomeiwen.com/i1235875/831c2855a5ce2685.png)
第 2 步
![](https://img.haomeiwen.com/i1235875/1f031387186d6452.png)
第 3 步
![](https://img.haomeiwen.com/i1235875/e92ed77bcb2b6de8.png)
第 4 步
![](https://img.haomeiwen.com/i1235875/6f0dba17887ded02.png)
第 5 步
这时候生成完了的类直接编译是报错的
![](https://img.haomeiwen.com/i1235875/349bab75acec20d0.png)
第 6 步
解决报错, 然后重新生成一下这些类
![](https://img.haomeiwen.com/i1235875/3981e41504d43443.png)
第 7 步
重新生成之后再编译
![](https://img.haomeiwen.com/i1235875/b7b79e505de70604.png)
第 8 步
我发现现在生成的类的名字和之前使用 Xcode7生成的不一样啊. 去百度了一下. 这个是可以改名字的. 直接改文件名就可以, 同时记住改里面的 #import ""
![](https://img.haomeiwen.com/i1235875/a599adca2739910a.png)
第 9 步
在 viewDidLoad 里面添加如下代码
然后 Command + R, 就可以愉快玩耍了
![](https://img.haomeiwen.com/i1235875/c1e8fcb19e038083.png)
我们再简单升级一下数据库
第 1 步
App迎来了下一个版本,演员表里面的演员新增了一个字段 "info", 这时候需要做升级处理,否则可能造成崩溃.
![](https://img.haomeiwen.com/i1235875/15fbb4f94b54e9b0.png)
第 2 步
![](https://img.haomeiwen.com/i1235875/422521aae74553aa.png)
第 3 步
在右侧窗口选择数据库的版本
![](https://img.haomeiwen.com/i1235875/59e28e94535f112e.png)
第 4 步
在新数据库模型的实体里面增加属性
![](https://img.haomeiwen.com/i1235875/ba2fe4f7df5e1dc8.png)
第 5 步
把原来的生成的类都删掉,然后老方法重新生成一次.
![](https://img.haomeiwen.com/i1235875/792d82bf7a194ebe.png)
第 6 步
生成完了之后可以改个名字
![](https://img.haomeiwen.com/i1235875/f9d81f711e7f6edc.png)
第 7 步
添加一个字典,为了配合数据库升级,然后在新字段中写点数据,如下图:
Command + R, 再玩一次
![](https://img.haomeiwen.com/i1235875/48f17ae9bc6784c4.png)
第 8 步
效果图:
![](https://img.haomeiwen.com/i1235875/1f872e42d3a1ea47.png)
关键代码:
NSDictionary *optionsDictionary = @{NSMigratePersistentStoresAutomaticallyOption: @YES, NSInferMappingModelAutomaticallyOption: @YES};
讲真,MarkDown 里面插入代码段很难用.
后续
附上我曾经拜访过的文章
iOS CoreData介绍和使用(以及一些注意事项)