项目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

    一,前言 离苹果正式发布swift3也有大半年的时间了,一般主流的swift三方库也都基本转到swift3了,所以...

  • Swift: 'try!' expression unexpec

    今年把Swift2.3转成3的时候,由于早期sqlite包不是用swift3编译的,因此重新找了一个github上...

  • Xcode8 + Cocoapods + Swift2.3 适配

    Xcode8 GM + Swift3发布,影响最大的就是一直以来使用Swift2.3开发,包含各种依赖lib的成熟...

  • swift2.3转swift3.0 (二)2.3—>3的变

    swift2.3转到3是相当痛苦的一件事,听群里有的人说整个项目适配整整花了三周,天了噜,幸亏我是直接OC转swi...

  • xcode8和swift3

    xcode8正式版本可以下载了,里面搭载了swift3。swift3和swift2语法是不兼容的,所以旧代码需要转...

  • ERROR ITMS-90167: "No .app bundl

    公司的项目比较旧,使用swift2.3写的,在提交Appstore时,提示错误:ERROR ITMS-90167:...

  • iOS 字典与字符串互相转换

    Swift: Swift3 JSON字符串和字典互转(JSON字符串转字典和字典转JSON字符串) http://...

  • Codable项目实践踩坑总结

    项目情况 在Swift2.3的时候就已经开始项目的整体Swift实现了。因为当时没有比较好用的Model,就使用O...

  • Any和AnyObject区别

    Any vs AnyObject 将项目里的 AnyObject 转成 Any 在swift3可能大家会有点困惑,...

  • 关于swift2.3到swift3升级记录

    简介 xcode8.3之后就只能支持swift3.0以上了,在上个版本做完后,我就开始做代码升级,在此记录一下过程...

网友评论

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

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