使用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 VersionNo ,在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 updatepod 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(唯一选项),错误就消失了。