201

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

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

有没有人遇到过这个?因为它是一个 Objective-C 项目,所以没有构建设置来配置 Swift。我还确保没有任何项目依赖项或 CocoaPods 使用 Swift。我唯一的解决方案是使用 Beta 2。有什么想法可以解决这个问题吗?

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

4

19 回答 19

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

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

于 2016-07-19T19:12:58.930 回答
119

我刚刚找到了修复它的方法。

转到项目或库的构建设置并将 Swift 编译器版本属性“使用旧版 Swift 语言版本”从未指定设置为是或否。

在此处输入图像描述

于 2016-07-19T08:51:29.447 回答
33

我已经有一段时间忽略了这个问题,同时也在做其他事情——我终于找到了解决问题的方法。

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

最终的解决方案是我的核心数据模型被设置为在 Swift 中生成代码,即使我已经在 File > New > NSManagedObjectSubclass 菜单中手动生成它们。我所要做的就是将它切换到Objective-C。

截屏

于 2016-07-26T18:48:10.597 回答
18

此问题在 Xcode-8.1 中也可见。当我们添加新的目标(如扩展或小部件)时,第三方库在 cocopods 的帮助下集成到新目标中。Pod 安装后。我们可能面临与上述相同的错误。

将每个库构建设置中的Use Legacy Swift Language Version更改为

没有

在此处输入图像描述

于 2016-11-08T09:00:20.847 回答
9

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

  1. 转到构建设置
  2. 查找使用旧版 swift 语言版本
  3. 是的 - 斯威夫特 2.3
  4. 否 - 斯威夫特 3.0 在此处输入图像描述
于 2017-02-04T10:11:55.000 回答
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
于 2016-10-07T04:56:31.553 回答
4

我正在开发一个混合了 Objective-c 和 swift 代码的项目,我之前使用的是 swift 版本 2.3,升级到 swift 3 后,我无法构建该项目。Xcode 抱怨提到的错误消息。

显然,我的 project.pbxproj 文件中仍然指定了一些过时的 Swift 版本。指定了 swift 3.0.1:

SWIFT_VERSION = 3.0.1;

然而,我已经安装了 3.0.2:

$ xcrun swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9

Sooo,我通过将 project-pbxproj 文件中的 Swift 版本更改为:

SWIFT_VERSION = 3.0;

似乎补丁级别的版本说明符过于具体。

于 2016-12-16T10:12:17.460 回答
4

就我而言,我只是做了以下事情

选择项目目标=>转到构建设置=>搜索“Swift语言版本”=>为当前的Swift版本赋值

就是这样它解决了我的问题

关注这张图片

于 2017-08-14T11:59:48.610 回答
4

我得到了同样的错误。我尝试搜索“使用旧版 Swift 语言版本”,但没有找到。我正在使用 Xcode 8.3.3 在浏览过多并解决之后,我找到了这个解决方案,这对我有用。在此处输入图像描述

Here are the 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.)
于 2017-10-24T07:23:01.810 回答
3

如果您在项目或任何 swift 3rd 第三方中使用旧版本的 swift,请将“使用旧版 Swift 语言版本”设置为“是”。如果您的项目已更新到当前的 swift 版本,则为“否”。如果你没有配置你的 swift 版本,在每次更新和安装之后,Pod 框架需要指定这个。

于 2016-09-22T07:50:15.200 回答
2

实际上,我必须搜索“Legacy Swift”才能将其从未指定更改为“是”当我简单地向下滚动到上述部分时,我无法更改它。我希望这会对某人有所帮助。

于 2016-10-11T21:46:40.640 回答
2

我的项目是用 Swift 编写的。我遇到了同样的错误fastlane。发生的事情是我的 Xcode 自动更新,所以我不得不将我的项目更新到 Swift 3.0。有很多错误。修复和调试花费了太多时间,而且当时不值得,所以我决定安装旧版本的 Xcode。将我的代码恢复到 2.3。然后fastlane beta就没有工作了。原来,我需要将命令行工具设置为 7.3。 在此处输入图像描述

于 2016-11-10T04:05:22.193 回答
1

如果您更改ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESNO仍然无法正常工作,那是因为 xcode 问题,而不是您的问题。执行以下步骤:

1.ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES将属性更改为YES警告目标

2.然后它会在左侧栏显示警告,建议您更改为 swift 3.0

3.然后改回NO。重建项目,xcode 终于检测到你对NO!

在这种情况下问题解决了!

于 2017-01-24T05:13:40.970 回答
1

我遇到了同样的问题并通过执行以下操作解决了它:

在项目 > 构建设置中:

Always Embed Swift Standard Libraries = $(inherited) Use Legacy Swift Language Version = YES

然后在我的 Podfile 中:

config.build_settings['SWIFT_VERSION'] = '3.0'

使用这三个设置删除了所有警告并允许我正确编译。

最晦涩且实际取得进展的编译是将 Podfile 中的 SWIFT_VERSION 从 3 更改为 3.0,如此处所建议

于 2017-01-30T16:19:54.250 回答
1

从 XCode 8 开始,您可以使用 swift 2.3,即使 XCode 8 使用 swift 3.x 作为默认的 swift 版本。要使用 Swift 2.3,只需从 Build Setting 中将 Use Legacy Swift Language Version 标记为 YES,然后 XCode 将为该项目目标使用 Swift 2.3。

于 2017-02-01T11:27:26.003 回答
1

在尝试复杂的解决方案之前,如果您是 Cocoapods 新手并且遇到此问题,则需要进行以下基本检查。

您可能需要:

  • 再次打开你的 Podfile
  • 检查平台的行是否没有用“#”注释掉。它最终应该看起来像:

platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)

  • 保存 Podfile,关闭 Xcode,然后pod install再次运行
  • 打开你的 project.xcworkspace

也许就是这样。

如果没有,你可以去上面;-)

于 2017-03-02T12:38:37.020 回答
1

更新到 xcode 8.3.2 后我遇到了同样的问题,但是“使用旧版 Swift 语言”选项消失了。这似乎是现在改变的选项: 斯威夫特朗版

将此修复与 Alamofire 和其他库一起使用,一切正常。

于 2017-04-24T13:48:33.840 回答
1

转到项目和目标的项目构建设置,执行以下两个操作。

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version  = Swift 3

更改为最新Swift 3的 .

错误已解决。

如果它解决了您的错误修复,请喜欢它。

于 2017-04-25T06:59:25.937 回答
1

在 Xcode 9 测试版中。转到项目设置,构建设置,搜索 Swift 语言版本。在 Xcode 9 中,您必须指定您使用的是 Swift 3.2 还是 Swift 4。

于 2017-06-06T15:58:32.397 回答