2017-06-08 80 views
8

我已經檢查瞭如何通過命令swift --version找到當前Swift版本的問題,但我怎樣才能將我的Swift版本從3.1升級到3.2? (因爲Xcode 9僅支持Swift 4.0 & Swift 3.2)我怎樣才能從3.1更新到3.2,而不是4.0

要成功構建Xcode 8 & Xcode 9,最好將Swift從3.1升級到3.2。但是如何?

我的目標是確保在Xcode 8中成功編譯& Xcode 9,這樣用Xcode 8發佈就可以了,而且試用Xcode 9的功能也可以。所以我不會將代碼升級到Swift 4.0,直到Xcode 9.0正式版發佈。

經過我的測試,我無法通過Xcode 8.3.3的'edit-> convert'功能將我的代碼從swift 3.1轉換爲3.2。

enter image description here

我之所以嘗試將代碼轉換爲雨燕3.2是,我會得到錯誤「與雨燕3.1編譯的模塊無法在雨燕4.0導入」如果我建立和Xcode代碼9.

enter image description here

+3

雨燕3.2這些步驟是不包含在Xcode 8.3.3,所以你不能轉換爲雨燕3.2在Xcode 8.3.3。 –

+0

您是否嘗試過清理生成文件夾?也許這不是一個轉換的東西,但事實上,構建文件夾中的東西是用Xcode 8構建的。 – Chris

+0

嗨,你能轉換它嗎?現在我的應用程序在xcode 8(Swift 3)中工作正常。我應該在將xcode 9轉換爲swift 4之前將其轉換爲swift 3.2嗎?那麼我應該下載哪個xcode來將其轉換爲3.3?任何提示都會有幫助 –

回答

0

從選項菜單:編輯 - >轉換 - >到當前斯威夫特語法

上述步驟幫助你轉換變成當前的快速語法。

+0

您的意思是在XCode9中執行此操作嗎? – JerryZhou

+0

你的代碼是在迅速3.1,你想轉換它在3.2,所以打開xcode 8.2並將其轉換爲3.2,然後打開xcode 9,然後將其轉換爲swift 4.0 –

+0

謝謝,但我不會轉換爲swift 4.0,直到Xcode 9.0正式版發佈。 – JerryZhou

5

夫特3.2是權宜之計繼續使用夫特的Xcode 9下3代碼而不完全轉換項目夫特4.

包括在xcode中夫特版本8.3.3是3.1。在Xcode 9下將代碼轉換爲Swift 3.2並不能保證它仍然可以在Xcode 8下編譯。

我不確定編譯Swift 3.1代碼是否像Xcode 9中的Swift 3.2一樣需要任何轉換,因爲它們共享相同的語法。您可能需要修正一些API調用,以補償新SDK中的更改。

蘋果已經在這裏多一點信息:

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

(更新)

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

+0

好點,我會小心這個。 – JerryZhou

+0

經過測試,我無法從swift 3.1轉換到3.2。好難過。 – JerryZhou

1

您不必轉換它。

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

+0

是的,但奇怪的是,如果我用Xcode 9構建,它會告訴我「使用Swift 3.1編譯的模塊無法在Swift 4.0中導入」的錯誤。 – JerryZhou

2

依賴模塊/迅速框架必須被重新編譯瓦特/ xcode9因爲迅速不ABI compatible/ stable。如果您已經使用包裹分發系統(如carthage或cocoa pod)包含依賴項,則模塊將重新編譯爲w/xcode9,您不應該看到此問題。如果鏈接內置分佈在二進制格式的軟件包,那麼你可以碰到問題

+0

是的,我理解您的觀點。我只是想知道如果我能用swift 3.2真正構建所有的東西,那麼我應該能夠使用Xcode 8和9運行代碼而無需重新編譯這些代碼。對?否則,它很難通過交換機Xcode8&9頻繁遷移和支持原始發佈計劃。 – JerryZhou

2

你可以試試這個:

  • 構建設置 - >語言特點斯威夫特版本 - >雨燕3.2。

enter image description here

  • 編輯 - >轉換 - >到當前斯威夫特語法。

注意到:使用Xcode的9

+0

我想我已經試過了。但不能記得工作。但我可以稍後再試一次。 – JerryZhou