[英]How can I update swift from 3.1 to 3.2, but not to 4.0
我已經通過命令swift --version
查看了有關如何找到當前Swift版本的問題,但是如何將我的Swift版本從3.1升級到3.2? (因為Xcode 9只支持Swift 4.0和Swift 3.2)
要在Xcode 8和Xcode 9中成功構建,最好將Swift從3.1升級到3.2。 但是怎么樣?
我的目標是確保在Xcode 8和Xcode 9中都能成功構建,因此使用Xcode 8發布是可以的,並且嘗試Xcode 9的功能也可以。 因此,在Xcode 9.0官方版發布之前,我不會將代碼升級到swift 4.0。
經過我的測試,我無法通過Xcode 8.3.3的'edit-> convert'功能將我的代碼從swift 3.1轉換為3.2。
我嘗試將代碼轉換為Swift 3.2的原因是,如果我使用Xcode 9構建代碼,我將得到“使用Swift 3.1編譯的模塊無法在Swift 4.0中導入”的錯誤。
Swift 3.2是一個權宜之計的解決方案,可以在Xcode 9下繼續使用Swift 3代碼,而無需將項目完全轉換為Swift 4。
Xcode 8.3.3中包含的Swift版本是3.1。 在Xcode 9下將代碼轉換為Swift 3.2並不能保證它仍然可以在Xcode 8下編譯。
我不確定編譯Swift 3.1代碼,因為Xcode 9下的Swift 3.2需要任何轉換,因為它們都共享相同的語法。 您可能必須修復一些API調用以補償新SDK中的更改。
Apple在此處提供了更多信息:
(更新)
關於你的最后一張圖片,如果你有Runes模塊的源代碼,你將不得不在Xcode 9下重新編譯它。這將使用Swift 3.2並允許它在Swift 4中導入。
swift中的依賴模塊/框架必須使用xcode9重新編譯,因為swift不是ABI兼容/穩定的 。 如果您使用包分發系統(如carthage或cocoa pod)包含依賴項,那么將使用xcode9重新編譯模塊,您不應該看到此問題。 如果要鏈接以二進制格式分發的包,那么您可能會遇到問題
你不必轉換它。
Swift 3.2不是實際版本。 它是Xcode 9(和Swift 4編譯器)調用Swift 3的方式。(我想區別於使用Xcode 8構建的Swift 3)。
從選項菜單:編輯 - >轉換 - >到當前Swift語法
以上步驟可幫助您轉換為當前的swift語法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.