一,前言
離蘋果正式發(fā)布swift3也有大半年的時間了,一般主流的swift三方庫也都基本轉(zhuǎn)到swift3了,所以這次正好利用版本間隙的時間,把公司項目由swift2.3轉(zhuǎn)到3上.(一兩周前已成功轉(zhuǎn)完,APP也系統(tǒng)的測試了一遍,現(xiàn)在已成功上線)我這個項目代碼量也不是太多,從我正式開始轉(zhuǎn),大概花了七八天時間,最后測試系統(tǒng)的測了三天.總共大概花了10天的時間!!!
二,準(zhǔn)備工作
1.在轉(zhuǎn)swift3之前,建議先了解下swift3有哪些新的特性,以及蘋果為什么打算這么修改.https://realm.io/cn/news/appbuilders-daniel-steinberg-whats-new-swift-3/ , 建議多看幾篇類似的文章了解下.
2.強(qiáng)烈建議在swift2.3的環(huán)境下,就提前把一些老的代碼風(fēng)格替換掉,如CGRectMake 轉(zhuǎn)為 CGRect
等等,因為這些修改如果你想等切換到swift3再去修改的話,你會發(fā)現(xiàn)很蛋疼,因為到時候編譯是報999+的錯誤
可以完全在切換到3之前把這些錯誤都解決了.下面我給出一個可以提前轉(zhuǎn)換掉的列表(以前OC遺留的代碼分格)
- CGRectMake ----> CGRect
- CGPointMake ----> CGPoint
- UIEdgeInsetsMake ----> UIEdgeInsets
- CGSizeMake ----> CGSize
- CGRectZero ----> CGRect.zero
- 字典和數(shù)組NSArray,NSDictionary這種寫法改用swift的寫法
ps:有些人會認(rèn)為蘋果會自動轉(zhuǎn)化,沒這個必要,其實對于一些簡單的情況,蘋果也確實會自動轉(zhuǎn)化
不過,我個人建議還是自己先提前轉(zhuǎn)下,工作量也不算多,特別是對于數(shù)組,字典這種,轉(zhuǎn)完就可以立馬看效果.畢竟這個時候代碼還是可以跑的??.
三,正式開始轉(zhuǎn)換
1.先處理三方庫的問題
三方庫有問題的也就是之前swift2.3的三方庫,對于oc的庫完全不受影響.我們只要找到三方庫作者轉(zhuǎn)化好的就行了,這部分代碼不需要我們自己轉(zhuǎn).下面是我當(dāng)時pod文件中做的處理.
對于還不支持swift3的三方庫,如果代碼量少的話,還可以將代碼拖到項目中自己修改,對于代碼量多的情況(一般三方庫代碼量都不少的),個人建議最好還是舍棄掉.我自己就把好幾個界面的代碼重寫了下.
三方庫的版本問題是否支出swift3,自行去github上查看.或者是去這查找https://cocoapods.org/
2.切換swift環(huán)境到swift3
對于,轉(zhuǎn)化的目標(biāo)文件,我們只需選取我們自己寫的代碼就行了,三方的庫都不要勾選
點(diǎn)擊next,我們就進(jìn)入了蘋果自己轉(zhuǎn)換的預(yù)覽界面了
這里,我們就只要點(diǎn)擊瀏覽瀏覽,默認(rèn)選取就可以了,這里你可以多停留些時間,把這些語法看看,正好自己可以對swift3的新特性再增強(qiáng)下了解.
3.可能遇到的問題!!
如果你發(fā)現(xiàn)所用成功使用swift3的三方框架都是報錯的
那是因為你三方的swift3的代碼還是用的swift2.3的編譯方式,切換下就行了.
這個方法不太好(要逐個解決),簡單點(diǎn)的方法,去項目中把pod文件夾里面的數(shù)據(jù)都刪了,重新
pod install
下.
4.最后一步處理(花費(fèi)時間最多的)
接下來就是手動處理,錯誤的代碼了,這個地方一定要耐心處理,不然往后項目中有些小錯誤你要定位很久的.
這里,解決錯誤還是建議,一個一個類型的錯誤統(tǒng)一處理,不然最后改的眼花繚亂,感覺狀態(tài)不好,就立馬放下鍵盤,待會再處理.心急吃不了熱豆腐??.
最后,就自求多福了...........希望能對你有所幫助.