转swift3.0,XCode8遇到的坑
由于项目是swift和oc混编,为了与时(zuo)俱进(si),我毅然决然的下了个Xcode8,开始转化工作,Xcode8支持swift2.3和swift3,我哥毫无犹豫直接convert
总结
- 首先只转自己的代码
- 转第三方库上的代码
下面先说第三方库代码
建议用cocoapods来更新,当然,手动更新一样
比如我用到的一些第三方库的最新版(支持swift3)
#更改的swift库(支持swift 3.0)
pod 'SwiftyJSON', '~> 3.0.0'
pod 'Alamofire', '~> 4.0.0'
pod 'IQKeyboardManagerSwift', '~> 4.0.6'
pod 'SnapKit', '~> 3.0.1'
Q:1.问题来了,怎么看哪个版本支持?
一般pod search 的版本都是最新的,注意阅读github上的README.md
Q:2.pod search到的库不是最新的?
执行 pod repo update更新本地仓库,本地仓库完成后,即可搜索到指定的第三方库
Q:3.更新了版本还抱第三方一大堆错误
打开TARGETS->Build setting->Swift Compiler - version,把Use legacy Swift Language Version改成 YES 或者 No
这里我遇到的问题是改了依旧报swift版本错误,有的人可以所以我的解决办法是:
#转swift 3.0配置swift库的swift version = 3.0
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
end
end
把上面copy到你的podfile文件去
自己代码转化中遇到的问题
基本上95%可以自动转化,4%手动转化,剩下的1%,没错还是要改写,因为有的代码手动转不了,得自己来重写
1.CGSizeMake -> CGSize
CGSize(width: width , height: height)
2.GCD 具体自己去 百度😂
3.警告⚠️,好多警告,如果报Missing File
1)打开终端
(2)输入以下命令
defaults write com.apple.finder AppleShowAllFiles YES
(3)重启finder
4.SnapKit
snp_top -> snp.top
snp_make->snp.make
这个匹配转化下
5.现在最蛋疼的返回值必须接受,否则警告
这个对轻微强迫症的我😂😂
6.极光头文件报错
//#define JPUSH_VERSION_NUMBER 2.1.9
我直接注释掉
7.想到了再更新--好多都忘记了哈哈