簡體   English   中英

如何將swift從3.1更新到3.2,而不是4.0

[英]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在此處提供了更多信息:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Compatibility.html

(更新)

關於你的最后一張圖片,如果你有Runes模塊的源代碼,你將不得不在Xcode 9下重新編譯它。這將使用Swift 3.2並允許它在Swift 4中導入。

你可以試試這個:

  • 構建設置 - > Swift Langauge版本 - > Swift 3.2。

在此輸入圖像描述

  • 編輯 - >轉換 - >到當前的Swift語法。

注意:這些步驟使用Xcode 9

swift中的依賴模塊/框架必須使用xcode9重新編譯,因為swift不是ABI兼容/穩定的 如果您使用包分發系統(如carthage或cocoa pod)包含依賴項,那么將使用xcode9重新編譯模塊,您不應該看到此問題。 如果要鏈接以二進制格式分發的包,那么您可能會遇到問題

你不必轉換它。

Swift 3.2不是實際版本。 它是Xcode 9(和Swift 4編譯器)調用Swift 3的方式。(我想區別於使用Xcode 8構建的Swift 3)。

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Compatibility.html

從選項菜單:編輯 - >轉換 - >到當前Swift語法

以上步驟可幫助您轉換為當前的swift語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM