繁体   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