我如何继续使用 Swift 2.3 而不是 3.0,Xcode 已更新且无法再构建

Posted

技术标签:

【中文标题】我如何继续使用 Swift 2.3 而不是 3.0,Xcode 已更新且无法再构建【英文标题】:How do I keep using Swift 2.3, instead of 3.0, Xcode updated and can't build anymore 【发布时间】:2016-09-22 10:53:20 【问题描述】:

我正在开发一个包含 20 多个框架依赖项的应用程序,但并非所有这些依赖项都在 3.0 上。所以我想继续使用 Swift 2.3。但是,将我的 Xcode 更新到 8.0 后,我无法再构建我的应用程序。它失败并出现以下错误:

“Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly.

我还不想将整个项目转换为 3.0。

所以我的问题是如何在 Xcode 8.0 更新后保持一切不变?

【问题讨论】:

我已经回答了和你类似的问题:***.com/questions/39485577/…你应该可以用它来调整你的框架 看到这个***.com/questions/38446097/… 【参考方案1】:

如果你想使用 Swift 2.3,你应该去Build Settings -> Use Legacy Swift Language Version -> YES 这将帮助你实现它。构建应用程序后,会有一些小的语法问题。修复后(不是那么难)它会照常进行

【讨论】:

现在图书馆有很多问题,其中一些是小问题,但我不知道如何解决其中一些。有没有更好的办法? 如果您使用源代码控制,请回滚到您尚未更新库的提交,如果您更新了当前库,其中一些已修改以满足 swift 3.0 语法,因此在这种情况下您构建时出现错误,在构建的 2.3 干净提交之后,您应该这样做:转换为最新的 swift 语法 - 稍后,不要更新库。 但如果我转换,它将是 3.0,我不想要那个,不是吗? 1) 您不应将代码转换为最新的 3.0,2) 不要更新库,3) 将 Use Legacy Swift Language Version 设置为 YES。一切都会好起来的。 这就是我所做的。项目运行良好,建设良好。 1.更新Xcode8。 2. 将 Use Legacy Swift Language Version 设置为 YES 我只需要这样做吗?【参考方案2】:

您可能想阅读这篇文章:https://swift.org/migration-guide/ 或更具体的部分使用 Carthage/CocoaPods 项目

我想你可以选择在你的 Xcode 工作区中包含项目的源代码 方法。这实质上意味着您将所有代码保留在 Swift 2.3 中,并对所有或部分外部框架(称为 Pod)进行快照,这些框架尚未支持 Swift 3.0。

【讨论】:

以上是关于我如何继续使用 Swift 2.3 而不是 3.0,Xcode 已更新且无法再构建的主要内容,如果未能解决你的问题,请参考以下文章

从 Swift 3.0 转换为 Swift 2.3

使用 Swift 2.3 编译的模块无法在 Swift 3.0 中导入

在 Swift 3.0 中设置 Alamofire 自定义目标文件名而不是使用建议的DownloadDestination

升级到 Xcode 8 并将语法从 swift 2.3 转换为 swift 3.0 后文件丢失警告

#error Unsupported architecture - cdefs.h - Swift BLE 项目在 Swift 2.3 中运行良好,但在 Swift 3.0 中仅在真实设备上出现错误

如何区分 Swift 3.0 中的类(确定它不是结构或枚举)[重复]