Xcode8 + Cocoapods + Swift2.3 适配


Xcode8 GM + Swift3发布,影响最大的就是一直以来使用Swift2.3开发,包含各种依赖lib的成熟项目,虽然Xcode8提供了一键Swift2.3 convert Swift3的选项,但是转换完成后几百个error也是常事。所以,在Xcode8下继续使用Swift2.3开发是简便快速的方式。

项目适配

  1. 升级完Xcode8之后,老项目打开之后,会弹出转换到Swift3的提示,两次点击Later忽略它

可以通过 Edit -> Convert -> To Current Swift Syntax... 来手动转换到Swift3

2.通过将Build Settings里的Use Legacy Swift Language Version设置为Yes,限定项目的Swift版本为2.3

Cocoapods适配

我们可以使用上面的方式,同样将Podsproject的Use Legacy Swift Language Version设置为Yes,老的项目就能够在Xcode8下以Swift2.3运行了。
但是重新运行pod installpod update安装(更新)pods后,Podsproject的Use Legacy Swift Language Version会被重置,我们可以通过pod钩子的方式,自动设置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

再次运行pod install后,所有的Swift依赖都会被限定为Swift2.3版本运行。

End

继续使用Swift2.3只是权宜之策,待各类小问题解决之后,Swift3必然是大势所趋。

  • 项目代码不是适配Swift3的难点,重点是三方框架
  • 某些框架的Swift3存在小问题,比如Alamofire,支持Swift3的release 4.0,设备要求是iOS9+,对于项目来说几乎是不可接受的
  • Cocoapods和项目project中的Use Legacy Swift Language Version,需要保持相同的设置
  • Swift2.3和Swift3的代码不可以混用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容