Xcode 8 Beta 3使用Legacy Swift问题

Bry*_*yan 200 swift xcode8 xcode8-beta3

我在Xcode 8 Beta 3中有一个Objective-C项目.自更新以来,每当我尝试构建时,都会收到以下错误:

对于使用Swift的目标,需要正确配置"使用Legacy Swift语言版本"(SWIFT_VERSION).使用[Edit> Convert> To Current Swift Syntax ...]菜单选择Swift版本或使用Build Settings编辑器直接配置构建设置.

有没有遇到过这个?由于它是一个Objective-C项目,因此没有构建设置来配置Swift.我还确保没有项目依赖项或CocoaPods使用Swift.我唯一的解决方案是使用Beta 2.任何想法如何解决这个问题?

我还应该提到我正在运行OSX 10.12 Beta 2.

Tul*_*leb 364

如果您正在使用CocoaPods并希望每次执行时都自动修复它pod install,那么您可以将这些行添加到Podfile的末尾:

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
Run Code Online (Sandbox Code Playgroud)

编辑:如果您使用CocoaPods v1.1.1或更高版本,此问题现已修复.不要忘记ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES从主项目目标中删除该设置.

  • 如果你想在你的代码库中暂时使用**2.3**,请使用`2.3`而不是`3.0`很棒的解决方案!这有效地使"使用Legacy Swift语言版本"变为"否"(或者如果你将它改为`2.3`它是'是').这个选项的好处是每次你'pod install`它自动设置该设置!真棒.我看到`SWIFT_VERSION`也设置在**Obj-C**项目上.我假设没有任何不良影响? (24认同)
  • 这很棒,但是如果没有StackOverflow上的Ruby专家,成千上万的项目都是SOL,这是非常令人不安的.我在每个模块和Pod项目中使用Build Settings手动将Xcode设置SWIFT_VERSION更改为2.3,但它不起作用,但是这样做了.意思隐藏着令人不安的魔法.我讨厌那个. (8认同)
  • 我真的登录就是为了给你提供道具 (5认同)

roc*_*ift 118

我刚刚找到了解决问题的方法.

转到项目或库的Build设置,并将Swift Compiler Version属性"Use Legacy Swift Language Version"从Unspecified设置为Yes或NO.

在此输入图像描述

  • 我在Objective-C项目中没有看到这个选项 (13认同)
  • 如果你正在使用swift和cocoapods,cocoapods上面的命令可以有效地做到这一点.如果您不希望每次"pod安装"都要更改它,我建议使用@Tulleb上面的答案. (2认同)

Bry*_*yan 33

我暂时忽略了这个问题,并在此期间只研究其他东西 - 我终于找到了解决问题的方法.

由于我的项目是Objective-C,我想可能我正在使用的一个Pod正在使用Swift,我检查了每个Pod,但没有一个是.

最后的解决方案是我的Core Data模型设置为在Swift中生成代码,即使我已经在File> New> NSManagedObjectSubclass菜单中手动生成它们.我所要做的就是将其切换到Objective-C.

截图

  • 确实是我的解决方案和救世主.谢谢!愚蠢的是,当整个应用程序是客观的时候,Apple如何使Coredata模型自动"Swifty".... (2认同)

Shr*_*wan 18

在Xcode-8.1中也可以看到此问题.当我们添加新的Target像Extension或Widget时,第三方库在cocopods的帮助下被整合到新的目标中.安装Pod后.我们可能面临与上述相同的错误.

将每个库构建设置中的使用旧版Swift语言版本更改为

.

在此输入图像描述


小智 9

如果您使用的是Xcode 8或更高版本

  1. 转到构建设置
  2. 查找使用旧版swift语言版本
  3. 是的 - 斯威夫特2.3
  4. 不 - Swift 3.0 在此输入图像描述


Sun*_*uru 5

在podfile的末尾添加以下代码.

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
Run Code Online (Sandbox Code Playgroud)