如何将swift从3.1更新到3.2,而不是4.0

Jer*_*hou 10 swift swift3 swift3.2 xcode9

我已经检查了有关如何通过命令找到当前Swift版本的问题swift --version,但是如何将我的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中导入"的错误.

在此输入图像描述

Mat*_*ues 6

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中导入.


Sou*_*ean 5

您可以尝试以下方法:

  • 构建设置-> Swift语言版本-> Swift 3.2。

在此处输入图片说明

  • 编辑->转换-​​>转换为当前Swift语法。

注意:这些步骤使用Xcode 9


小智 0

从选项菜单:编辑 -> 转换 -> 到当前 Swift 语法

上述步骤可帮助您转换为当前的 swift 语法。