[英]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.