使用旧版 Swift 语言版本 - Xcode 8.2
Use Legacy Swift Language Version - Xcode 8.2
更新到 Xcode 8.2 后,编译器对我的 App 目标抛出一个错误:
“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.
但在我的所有目标中都将其设置为 No
。试图删除派生数据,清理项目目录,重新启动 Xcode。没有任何帮助。有人知道吗?
// 已编辑
只是为了确定:我已经将我所有的目标 Use Legacy Swift Language Version
设置为 No
并且项目在 Xcode 8.1 中编译时工作正常。更新到 Xcode 8.2.
后不起作用
// 编辑 21.12.
此问题已在 Xcode 8.2.1
中修复
好吧,我终于弄明白了。我已经删除了该项目并再次克隆它,重新启动了 Xcode、运行 pod repo update
和 pod install
并且它起作用了。我不知道为什么。
找到解决方法。我在我的项目中检查了每个目标(和项目设置,所以在项目和目标中),切换 "Use Legacy Swift Language Version" 来自“No”到“是”,然后返回到“否”。然后再次构建该项目。
关闭 Xcode 并在您选择的文本编辑器中打开相应的 project.pbxproj
。
将所有目标的 SWIFT_VERSION = 3.0.1;
替换为 SWIFT_VERSION = 3.0;
。
重新打开 Xcode。
这对我们不起作用 :( 在 Apple QA 发布之前恢复到 Xcode 8.1 是目前最好的。
如果这有任何安慰的话,那就是我们尝试过的事情,让我们非常接近。我们卡在了清理失败:
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache
rm -rf ~/Library/Preferences/com.apple.Xcode.plist
重新启动 Xcode
并按住 option
键进行深度清理
那摆脱了清理失败。
将此添加到您的 pod 脚本
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
end
end
这就是让所有 pods 符合 3.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.
我们如何更改工作区以使所有项目都符合 swift 3.0?该设置在哪里?
事实证明,Apple 决定引用 pbxprojec 文件中尚不存在的 swift 语言版本。他们对 3.0.1 进行了硬编码,然后通过手动将 pbx 文件中的 sudo XML 编辑回 3.0,一切又恢复正常了。 Apple 在发布 8.2
之前显然忽略了一些简单的 QA 工作
这也可以解释为什么在构建设置中的遗留之间切换对某些人有效。
已在 Xcode 8.2.1.
中修复
这里是changelog of Xcode 8.2.1的完整副本:
Swift
Resolved Issues
- Fixed an issue that could cause building a project to fail with the error message “"Use Legacy Swift Language Version" (SWIFT_VERSION) is required to be configured correctly for targets which use Swift” when using a supported version of Swift. (29667880)
- Xcode no longer warns about using deprecated Swift 2.3 code when the active scheme does not reference targets using Swift 2.3 code. (29671741)
这是唯一对我有用的东西...
对于 pods 的错误。基本上我们需要启用“Legacy Swift Language”。 Select 您的 pod 框架(通过在错误导航器中单击它)并在构建设置下找到“使用旧版 Swift 语言版本”
设置为“是”。然后再次“Build & 运行”进行测试。
看看这个 post:http://rebeloper.com/downgrade-swift-3-swift-2-3-xcode-8/
我在将部分应用程序(Obj C 和 Swift)转换为框架时遇到了同样的错误,但在我的情况下,构建设置下的 "Swift Language Version" 不是放。我将它设置为 Swift 3(唯一的选项),错误消失了。
我遇到了同样的错误。我尝试搜索 "Use Legacy Swift Language Version",但没有找到。 我正在使用 Xcode 8.3.3
在网上冲浪太多并解决之后,我找到了这个解决方案,这对我有用。
Follow these steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to swift 3. (or accordingly.)
希望这对你有用。
更新到 Xcode 8.2 后,编译器对我的 App 目标抛出一个错误:
“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.
但在我的所有目标中都将其设置为 No
。试图删除派生数据,清理项目目录,重新启动 Xcode。没有任何帮助。有人知道吗?
// 已编辑
只是为了确定:我已经将我所有的目标 Use Legacy Swift Language Version
设置为 No
并且项目在 Xcode 8.1 中编译时工作正常。更新到 Xcode 8.2.
// 编辑 21.12.
此问题已在 Xcode 8.2.1
中修复好吧,我终于弄明白了。我已经删除了该项目并再次克隆它,重新启动了 Xcode、运行 pod repo update
和 pod install
并且它起作用了。我不知道为什么。
找到解决方法。我在我的项目中检查了每个目标(和项目设置,所以在项目和目标中),切换 "Use Legacy Swift Language Version" 来自“No”到“是”,然后返回到“否”。然后再次构建该项目。
关闭 Xcode 并在您选择的文本编辑器中打开相应的 project.pbxproj
。
将所有目标的 SWIFT_VERSION = 3.0.1;
替换为 SWIFT_VERSION = 3.0;
。
重新打开 Xcode。
这对我们不起作用 :( 在 Apple QA 发布之前恢复到 Xcode 8.1 是目前最好的。
如果这有任何安慰的话,那就是我们尝试过的事情,让我们非常接近。我们卡在了清理失败:
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache
rm -rf ~/Library/Preferences/com.apple.Xcode.plist
重新启动 Xcode
并按住 option
键进行深度清理
那摆脱了清理失败。
将此添加到您的 pod 脚本
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
end
end
这就是让所有 pods 符合 3.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.
我们如何更改工作区以使所有项目都符合 swift 3.0?该设置在哪里?
事实证明,Apple 决定引用 pbxprojec 文件中尚不存在的 swift 语言版本。他们对 3.0.1 进行了硬编码,然后通过手动将 pbx 文件中的 sudo XML 编辑回 3.0,一切又恢复正常了。 Apple 在发布 8.2
之前显然忽略了一些简单的 QA 工作这也可以解释为什么在构建设置中的遗留之间切换对某些人有效。
已在 Xcode 8.2.1.
中修复这里是changelog of Xcode 8.2.1的完整副本:
Swift
Resolved Issues
- Fixed an issue that could cause building a project to fail with the error message “"Use Legacy Swift Language Version" (SWIFT_VERSION) is required to be configured correctly for targets which use Swift” when using a supported version of Swift. (29667880)
- Xcode no longer warns about using deprecated Swift 2.3 code when the active scheme does not reference targets using Swift 2.3 code. (29671741)
这是唯一对我有用的东西...
对于 pods 的错误。基本上我们需要启用“Legacy Swift Language”。 Select 您的 pod 框架(通过在错误导航器中单击它)并在构建设置下找到“使用旧版 Swift 语言版本”
设置为“是”。然后再次“Build & 运行”进行测试。
看看这个 post:http://rebeloper.com/downgrade-swift-3-swift-2-3-xcode-8/
我在将部分应用程序(Obj C 和 Swift)转换为框架时遇到了同样的错误,但在我的情况下,构建设置下的 "Swift Language Version" 不是放。我将它设置为 Swift 3(唯一的选项),错误消失了。
我遇到了同样的错误。我尝试搜索 "Use Legacy Swift Language Version",但没有找到。 我正在使用 Xcode 8.3.3 在网上冲浪太多并解决之后,我找到了这个解决方案,这对我有用。
Follow these steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to swift 3. (or accordingly.)
希望这对你有用。