原文地址: https://kemchenj.github.io/20...html
Swift 3的 beta 版如今已經出來了, Chris Lattner 以前在郵件裏也大概提到說 Swift 3在八月就基本上全面完工ios
你們在寫小 demo 或者是項目遷移到 Swift 3.0 的時候遇到最大的一個問題應該是第三方庫的添加git
Swift 社區一直都是熱情爆滿, 諸如 Alamofire, Decodable等第三方庫都有 Swift 3.0 的分支, 但若是在導入的時沒有處理一下, 就老是會出各類奇奇怪怪的問題, 我在這裏分享一下我本身的解決方案github
其實主要要處理的問題就只有兩個swift
指定第三方庫的某個特定分支xcode
指定工程文件內 Swift 編譯的版本app
這裏以 Alamofire 爲例, 主要是須要在 podfile 裏面多加點東西post
首先是指定分支, cocoapods自己只支持 name 跟 version 兩個參數, 但咱們能夠經過指定 git 倉庫, 而後再指定 branch, 具體格式以下:學習
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3'
還有就是指定 Swift 的版本, 只要在項目的最後加上下面這幾句就能夠了, 這裏的幾句話對項目裏的 target 作了個遍歷, 修改了所有 target 的 Swift 編譯版本ui
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
可是這麼寫有一個缺點, Objective-C 跟 Swift 的混編項目, 若是想要引入 OC 的庫的話, 就不能這麼作了, 可是一個一個去設置編譯版本又太麻煩, 我以爲最簡單的仍是直接進去項目裏, 把SWIFT_VERSION
這一項刪掉就能夠了
完整 podfile 以下:
project 'sample.xcodeproj' platform :ios, '9.0' target 'sample' do use_frameworks! pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3' end 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
Carthage 的具體用法我就不解釋了, 其實我我的而言仍是更喜歡 Carthage, 本身操做過一遍基本上都能理解第三方庫導入的過程了
Carthage因爲自己就是一個去中心化的包管理器, 因此在 cartfile 裏面選擇分支就能夠了
github "Alamofire/Alamofire" "swift3"
Carthage編譯就很簡單了, Swift 3的話直接 carthage update
就好了, xcodebuild 指向了Xcode 8的前提下, 默認 Swift 3, 可是 Swift 2.3的話就須要指定一下版本, 以下:
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage update --platform ios
而後編譯的時候有一點須要注意的是, Carthage 默認會調用 xcode build 去變異, 若是咱們電腦同時有兩個版本的 Xcode 的時候, 須要確認一下 Xcode build 的版本
若是不是 Xcode 8的話, 就運行一下這條命令去修改就能夠了
sudo ./xcode-select -switch /Applications/Xcode-beta.app/
Swift 的各方各面都讓人以爲欲罷不能, 比起有點年紀的 Objective-C, 天天的接觸都能感覺到 Swift 各類神奇的寫法
Swift 像是個什麼都想要的任性的女友, 跟她一塊兒會很累, 累的是你必須爲了她的進步而更加努力去學習更多東西, 接觸更多新的東西
"Swift 從入門到從新入門"看起來好像很悲催, 但若是改爲"女友從認識到從新認識", 其實也挺帶感的...
初級 iOS 開發, 廣州地區求職 ing
簡歷: https://kemchenj.github.io/re...
聯繫方式: chenkem95@outlook.com