项目swift2.3转swift3

作者: 一声雷 | 来源:发表于2017-01-20 19:33 被阅读212次

    一,前言

    离苹果正式发布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+的错误

    swift3切换后的错误数量.png
    可以完全在切换到3之前把这些错误都解决了.下面我给出一个可以提前转换掉的列表(以前OC遗留的代码分格)
    • CGRectMake ----> CGRect
    • CGPointMake ----> CGPoint
    • UIEdgeInsetsMake ----> UIEdgeInsets
    • CGSizeMake ----> CGSize
    • CGRectZero ----> CGRect.zero
    • 字典和数组NSArray,NSDictionary这种写法改用swift的写法

    ps:有些人会认为苹果会自动转化,没这个必要,其实对于一些简单的情况,苹果也确实会自动转化


    苹果自动转换的.png

    不过,我个人建议还是自己先提前转下,工作量也不算多,特别是对于数组,字典这种,转完就可以立马看效果.毕竟这个时候代码还是可以跑的😂.

    三,正式开始转换

    1.先处理三方库的问题
    三方库有问题的也就是之前swift2.3的三方库,对于oc的库完全不受影响.我们只要找到三方库作者转化好的就行了,这部分代码不需要我们自己转.下面是我当时pod文件中做的处理.

    podfile文件.png
    对于还不支持swift3的三方库,如果代码量少的话,还可以将代码拖到项目中自己修改,对于代码量多的情况(一般三方库代码量都不少的),个人建议最好还是舍弃掉.我自己就把好几个界面的代码重写了下.
    三方库的版本问题是否支出swift3,自行去github上查看.或者是去这查找https://cocoapods.org/

    2.切换swift环境到swift3


    切换到swift3.png

    对于,转化的目标文件,我们只需选取我们自己写的代码就行了,三方的库都不要勾选


    选取转化目标.png
    点击next,我们就进入了苹果自己转换的预览界面了 屏幕快照 2016-12-29 上午11.00.12.png 屏幕快照 2016-12-29 上午11.00.36.png 屏幕快照 2016-12-29 上午11.02.45.png 屏幕快照 2016-12-29 上午11.03.22.png

    这里,我们就只要点击浏览浏览,默认选取就可以了,这里你可以多停留些时间,把这些语法看看,正好自己可以对swift3的新特性再增强下了解.

    3.可能遇到的问题!!
    如果你发现所用成功使用swift3的三方框架都是报错的


    使用swift3代码的三方库还是报错.png

    那是因为你三方的swift3的代码还是用的swift2.3的编译方式,切换下就行了.

    单个处理方式,这个方法不太好.png
    这个方法不太好(要逐个解决),简单点的方法,去项目中把pod文件夹里面的数据都删了,重新pod install下. 简单的处理方式.png

    4.最后一步处理(花费时间最多的)
    接下来就是手动处理,错误的代码了,这个地方一定要耐心处理,不然往后项目中有些小错误你要定位很久的.

    单次解决一个类型的错误.png

    这里,解决错误还是建议,一个一个类型的错误统一处理,不然最后改的眼花缭乱,感觉状态不好,就立马放下键盘,待会再处理.心急吃不了热豆腐😂.

    最后,就自求多福了...........希望能对你有所帮助.

    相关文章

      网友评论

        本文标题:项目swift2.3转swift3

        本文链接:https://www.haomeiwen.com/subject/xvdyvttx.html