1. 程式人生 > >Xcode8 Use Legacy Swift Language Version的錯誤解決

Xcode8 Use Legacy Swift Language Version的錯誤解決

Xcode 8的到來,Swift版本由2.3省級到3.0語法有較大變動。

首先無論新舊專案在Xcode8.x下執行後必須設定Swift Version去適配swift語言的語法問題:

執行操作 [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly

但結果還是錯誤一大堆:下面是我遇到這些問題的過程 和 解決過程

錯誤1:Swift語法問題:因為Xcode8.0有了Swift3.0版本語法改動較大,之前都是swift2.3版本的。需要點選Edit->Convert->To Current Swift Syntax...修復,選擇swift版本,我選擇的是swift2.3 and later。 但我這專案之前是OC和swift混編,

按此修復了所有swift檔案,還是一堆的語法錯誤。如圖:


這是點選Edit->Convert->To Current Swift Syntax...出現的對比圖。左邊是修改後的程式碼,右邊是修改前的。

進行此操作後出現語言錯誤,一大堆,這Xcode自動修改的沒問題嗎?

顯然Xcode讓我們改成左邊語法是不對的,但Xcode還讓我們改?!日了狗了,後來在按照上述操作進行時先別點選sava(其實你編譯一下就會報錯了,有這種for迴圈修改的錯,我回退了這些for迴圈的修改(直接點選中間灰色部分選擇discard),所有這種discard後,其他照常修復,然後再點選save,結果就解決了Swift版本的問題。

後來使用Xcode8 正式版操作完後出現了一個新的錯誤:就是程式碼let a = xxx.xxx() 報錯,主要是xxx()方法返回UIView,所以改成let a:UIView = xxx.xxx()解決了該錯誤。

錯誤2:使用CocoaPods 匯入有swift語言的框架後的錯誤解決,首先無論怎麼樣你執行或者編譯他都會有如圖所示的錯誤提示:


第一對於已經適配了swift3.0的按理來說不會出現該錯誤了,但那時我匯入已經適配swift的ReactiveCocoa還是出現了該錯誤。執行了Edit->Convert->To Current Swift Syntax...去修復,還是不能解決問題,

解決方法是:直接進行如下圖選擇Yes後編譯執行問題解決