一,前言
离苹果正式发布swift3也有大半年的时间了,一般主流的swift三方库也都基本转到swift3了,所以这次正好利用版本间隙的时间,把公司项目由swift2.3转到3上.(一两周前已成功转完,APP也系统的测试了一遍,现在已成功上线)我这个项目代码量也不是太多,从我正式开始转,大概花了七八天时间,最后测试系统的测了三天.总共大概花了10天的时间!!!
二,准备工作
1.在转swift3之前,建议先了解下swift3有哪些新的特性,以及苹果为什么打算这么修改.https://realm.io/cn/news/appbuilders-daniel-steinberg-whats-new-swift-3/ , 建议多看几篇类似的文章了解下.
2.强烈建议在swift2.3的环境下,就提前把一些老的代码风格替换掉,如CGRectMake 转为 CGRect
等等,因为这些修改如果你想等切换到swift3再去修改的话,你会发现很蛋疼,因为到时候编译是报999+的错误
可以完全在切换到3之前把这些错误都解决了.下面我给出一个可以提前转换掉的列表(以前OC遗留的代码分格)
- CGRectMake ----> CGRect
- CGPointMake ----> CGPoint
- UIEdgeInsetsMake ----> UIEdgeInsets
- CGSizeMake ----> CGSize
- CGRectZero ----> CGRect.zero
- 字典和数组NSArray,NSDictionary这种写法改用swift的写法
ps:有些人会认为苹果会自动转化,没这个必要,其实对于一些简单的情况,苹果也确实会自动转化
不过,我个人建议还是自己先提前转下,工作量也不算多,特别是对于数组,字典这种,转完就可以立马看效果.毕竟这个时候代码还是可以跑的.
三,正式开始转换
1.先处理三方库的问题
三方库有问题的也就是之前swift2.3的三方库,对于oc的库完全不受影响.我们只要找到三方库作者转化好的就行了,这部分代码不需要我们自己转.下面是我当时pod文件中做的处理.
对于还不支持swift3的三方库,如果代码量少的话,还可以将代码拖到项目中自己修改,对于代码量多的情况(一般三方库代码量都不少的),个人建议最好还是舍弃掉.我自己就把好几个界面的代码重写了下.
三方库的版本问题是否支出swift3,自行去github上查看.或者是去这查找 https://cocoapods.org/
2.切换swift环境到swift3
对于,转化的目标文件,我们只需选取我们自己写的代码就行了,三方的库都不要勾选
点击next,我们就进入了苹果自己转换的预览界面了
这里,我们就只要点击浏览浏览,默认选取就可以了,这里你可以多停留些时间,把这些语法看看,正好自己可以对swift3的新特性再增强下了解.
3.可能遇到的问题!!
如果你发现所用成功使用swift3的三方框架都是报错的
那是因为你三方的swift3的代码还是用的swift2.3的编译方式,切换下就行了.
这个方法不太好(要逐个解决),简单点的方法,去项目中把pod文件夹里面的数据都删了,重新
pod install
下.
4.最后一步处理(花费时间最多的)
接下来就是手动处理,错误的代码了,这个地方一定要耐心处理,不然往后项目中有些小错误你要定位很久的.
这里,解决错误还是建议,一个一个类型的错误统一处理,不然最后改的眼花缭乱,感觉状态不好,就立马放下键盘,待会再处理.心急吃不了热豆腐.
最后,就自求多福了...........希望能对你有所帮助.