2016-07-27 65 views
5

我有一個項目,其中寫入的代碼量很少,我認爲是swift 2.3它包含和app擴展也寫在swift 2.3中,並使用2個Cocoapods:SwiftyJSONMMWormhole。在下載Xcode 8.3 beta後,遷移程序運行,並且我在SwiftyJSON中包含的一個主要swift文件中留下了近100個編譯器錯誤。使用Xcode8和一個使用cocoapods的swift 2.3項目

基本上我想知道是否有一種方法可以在Xcode8中給出這些細節。我很高興將自己的代碼更新到swift3,但是我不控制cocoapods(MMWormHole在Objective-C中,所以我認爲Xcode會將它轉換爲它需要的Swift版本,因爲它不會發出編譯器錯誤)。我可以告訴Xcode全局使用swift 2.3嗎?

回答

0

根據我在啓動工作區時的經驗,SDK應該問您是否要將代碼轉換爲Swift 3或「稍後」執行。通過稍後選擇,它不會將你的代碼遷移到swift 3.我必須警告你,儘管我經歷了同樣的事情,並且幾乎不可能僅僅因爲你想使用最新的和最好的Xcode 8而向後工作。最終會遇到問題,比如您準備推送到應用商店時iTunesConnect將不會接受任何低於版本10的文件。另外,如果其他開發者繼承了您的代碼,那麼他們會遇到問題正在使用較早版本的Xcode。

+0

我不耐煩地敲擊遷移按鈕,發現它是困難的,如果不是不可能的去遷移,因爲你沒有犯一個方便的最近時間.. –

2

許多開源Swift項目都有Swift 3或Swift 2.3的分支(有關流行方法的詳細信息,請參閱this post)。我檢查了SwiftyJSON,它似乎有一個Swift 3的分支,所以你可以將你的應用程序轉換成Swift 3,並試一試。爲了使用它,改變你的Podfile到SwiftyJSON項:

pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git', :branch => 'swift3' 

這取決於項目更新每個Xcode中8的測試版,所以它可能不會是完全的工作,但很可能會有少於100個錯誤。

注意:更新所有內容並修復編譯器錯誤後,您可能會看到「使用傳統Swift語言版本」錯誤。這可以通過將post_install步驟添加到您的Podfile(請參閱this GitHub issue)或更新至CocoaPods 1.1.0.beta.1或更高版本(gem install cocoapods --pre)來解決。

6

您必須將Use Legacy Swift Language Version設置爲YES才能使用SWIFT 2.3代碼Xcode 8。然後將其添加到您的Podfile中,以確保您的所有吊艙目標都一致。

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
    target.build_configurations.each do |configuration| 
     configuration.build_settings['SWIFT_VERSION'] = "2.3" 
    end 
    end 
end 

我希望它會有所幫助。

+3

這看起來像和'結束'許多 – Cyrus

+0

這真的很有用。謝謝! – speedynomads

0

以下添加到您的Podfile結束然後運行pod install

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 
相關問題