使用Legacy Swift语言版本 – 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中修复
找到工作。 我在项目中浏览了每个目标(和项目设置,以及项目和目标中的项目设置),将“使用旧版Swift语言版本”从“ 否 ”切换为“ 是 ”,并将每个目标切换回“ 否 ”。 然后该项目再次建成。
在Xcode 8.2.1中修复。
这是Xcode 8.2.1的更改日志的完整性的副本:
迅速
已解决的问题
- 修复了可能导致构建项目失败的问题,并且使用支持的Swift版本时,需要为使用Swift的目标正确配置“使用Legacy Swift语言版本”(SWIFT_VERSION)。 (29667880)
- 当活动方案不使用Swift 2.3代码引用目标时,Xcode不再警告使用弃用的Swift 2.3代码。 (29671741)
我得到了同样的错误。 我试图搜索“使用Legacy Swift语言版本”,但没找到。 我正在使用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并在您选择的文本编辑器中打开相应的project.pbxproj
。
替换SWIFT_VERSION = 3.0.1;
SWIFT_VERSION = 3.0;
对于所有目标。
重新打开Xcode。
这是唯一对我有用的东西……
对于pods的错误。 基本上我们需要启用“Legacy Swift Language”。 选择您的pod框架(通过在错误导航器中单击它),然后在Build Settings下找到“Use Legacy Swift Language Version”
将其设置为“是”。 然后再“构建并运行”以测试它。
看看这篇文章: http : //rebeloper.com/downgrade-swift-3-swift-2-3-xcode-8/
好吧,我终于搞清楚了。 我已删除该项目并再次克隆它,重新启动Xcode,运行pod repo update
和pod install
,它工作正常。 我不知道为什么。
这对我们来说不起作用:(恢复到Xcode 8.1是最好的,直到Apple QA发布之前他们的东西。
如果这里的任何安慰是我们尝试的事情,并让我们非常接近。 我们陷入了清洁失败的困境:
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
这是让所有pod符合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? 那个环境在哪里?
事实certificate,Apple决定引用pbxprojec文件中尚不存在的swift语言版本。 他们硬编码3.0.1,并通过手动编辑pbx文件中的sudo XML回到3.0,一切都工作了。 在发布8.2之前,Apple显然忽略了一些简单的QA工作
这也可以解释为什么在构建设置中的遗留切换为某些人工作。
将我的应用程序的部分内容(Obj C和Swift)转换为框架时出现了同样的错误,但在我的情况下,没有设置Build Settings下的“Swift语言版本”。 我把它设置为Swift 3(唯一选项),错误就消失了。