转swift3.0,XCode8遇到的坑

2016-09-29  本文已影响216人  拥抱月亮的大星星

由于项目是swift和oc混编,为了与时(zuo)俱进(si),我毅然决然的下了个Xcode8,开始转化工作,Xcode8支持swift2.3swift3,我哥毫无犹豫直接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)

更多请参考:http://stackoverflow.com/questions/37946990/cgrectmake-cgpointmake-cgsizemake-cgrectzero-cgpointzero-is-unavailable-in

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.想到了再更新--好多都忘记了哈哈

上一篇下一篇

猜你喜欢

热点阅读