Xcode8 GM + Swift3發(fā)布迟隅,影響最大的就是一直以來(lái)使用Swift2.3開(kāi)發(fā)松蒜,包含各種依賴(lài)lib的成熟項(xiàng)目,雖然Xcode8提供了一鍵Swift2.3 convert Swift3的選項(xiàng)已旧,但是轉(zhuǎn)換完成后幾百個(gè)error也是常事秸苗。所以,在Xcode8下繼續(xù)使用Swift2.3開(kāi)發(fā)是簡(jiǎn)便快速的方式运褪。
項(xiàng)目適配
- 升級(jí)完Xcode8之后惊楼,老項(xiàng)目打開(kāi)之后,會(huì)彈出轉(zhuǎn)換到Swift3的提示秸讹,兩次點(diǎn)擊
Later
忽略它
可以通過(guò) Edit -> Convert -> To Current Swift Syntax... 來(lái)手動(dòng)轉(zhuǎn)換到Swift3
2.通過(guò)將Build Settings里的Use Legacy Swift Language Version
設(shè)置為Yes檀咙,限定項(xiàng)目的Swift版本為2.3
Cocoapods適配
我們可以使用上面的方式,同樣將Pods
project的Use Legacy Swift Language Version
設(shè)置為Yes璃诀,老的項(xiàng)目就能夠在Xcode8下以Swift2.3運(yùn)行了弧可。
但是重新運(yùn)行pod install
或pod update
安裝(更新)pods后,Pods
project的Use Legacy Swift Language Version
會(huì)被重置劣欢,我們可以通過(guò)pod鉤子的方式棕诵,自動(dòng)設(shè)置swift版本在Podfile
文件頭部,加入代碼
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end
end
再次運(yùn)行pod install
后凿将,所有的Swift依賴(lài)都會(huì)被限定為Swift2.3版本運(yùn)行校套。
End
繼續(xù)使用Swift2.3只是權(quán)宜之策,待各類(lèi)小問(wèn)題解決之后牧抵,Swift3必然是大勢(shì)所趨搔确。
- 項(xiàng)目代碼不是適配Swift3的難點(diǎn),重點(diǎn)是三方框架
- 某些框架的Swift3存在小問(wèn)題灭忠,比如Alamofire膳算,支持Swift3的release 4.0,設(shè)備要求是iOS9+弛作,對(duì)于項(xiàng)目來(lái)說(shuō)幾乎是不可接受的
- Cocoapods和項(xiàng)目project中的
Use Legacy Swift Language Version
涕蜂,需要保持相同的設(shè)置 - Swift2.3和Swift3的代碼不可以混用