Xcode 8 Beta 3使用遗留Swift问题

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

使用Swift的目标需要正确配置“使用遗留Swift语言版本”(SWIFT_VERSION)。使用[编辑>转换>到当前Swift语法…]菜单选择Swift版本或使用构建设置编辑器直接配置构建设置。

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

我还应该提到我运行的是OSX 10.12 Beta 2。

98428 次浏览

我刚找到了补救的方法。

转到项目或库的构建设置,将Swift Compiler Version属性“Use Legacy Swift Language Version”从未指定设置为Yes或NO。

enter image description here

如果你正在使用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

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

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

因为我的项目是Objective-C,我想也许我正在使用的Pod之一正在使用Swift,我检查了每个Pod,没有一个是。

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

截图

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

在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

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

这个问题在Xcode-8.1中也可以看到。当我们添加新的目标,如扩展或小部件和第三方库集成在新目标的cocopods的帮助下。在圆荚体安装之后。我们可以面对与上面相同的错误。

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

没有

enter image description here

我的项目是用Swift写的。我在fastlane中得到了相同的错误。发生的事情是我的Xcode自动更新,所以我必须将我的项目更新到Swift 3.0。有很多错误。修复和调试花费了太多时间,而且当时不值得,所以我决定安装一个旧版本的Xcode。把我的代码恢复到2.3。然后fastlane beta不再工作了。结果,我需要将命令行工具设置为7.3。 enter image description here < / p >

我正在做一个混合了objective-c和swift代码的项目 我以前使用的是swift 2.3版本,升级到swift 3后,我无法构建项目。

. Xcode报错

显然,在我的项目中仍然有一些过时的Swift版本。pbxproj文件。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

因此,我通过更改project-pbxproj文件中的Swift版本来修复它:

SWIFT_VERSION = 3.0;

看来补丁级别的版本说明符太具体了。

如果你将ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES更改为NO仍然不能工作,这是因为xcode问题,而不是你的问题。执行以下步骤:

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

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

3.然后改回NO。重新构建项目,xcode最终检测到你对NO的更改!

问题解决了!

我也遇到过同样的问题,并通过以下方法解决了它:

在Project >构建设置中:

< p > Always Embed Swift Standard Libraries = $(inherited) Use Legacy Swift Language Version = YES < / p >

然后在我的Podfile中:

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

使用这三个设置可以消除所有警告,并允许我正确编译。

最模糊的和真正获得编译进展的是将Podfile中的SWIFT_VERSION从3更改为3.0,正如在这里所建议的那样。

从XCode 8开始,你可以使用swift 2.3,即使XCode 8使用swift 3。默认swift版本为X。要使用swift 2.3,只需在构建设置中将“使用传统swift语言版本”的标志打开为YES,那么XCode将对该项目目标使用swift 2.3。

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

  1. 转到构建设置
  2. 查找使用遗留的swift语言版本
  3. 是- Swift 2.3
  4. 否- Swift 3.0 李enter image description here < / >

在尝试复杂的解决方案之前,如果你是Cocoapods的新手,并且遇到了这个问题,你需要做一个基本的检查。

你可能需要:

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

platform:ios, '10.1' #在这里输入正确的版本,没有#平台 use_frameworks !# swift pod "MyPod" #你的意思pod:)

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

也许就是这样。

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

我在更新到xcode 8.3.2后也遇到了同样的问题,但“使用传统Swift语言”选项消失了。这似乎是现在要改变的选项: Swift Lang Version < / p >

使用这个修复与Alamofire和其他lib和所有工作正常。

转到项目构建设置项目和目标做以下两个。

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version  = Swift 3

更改为最新的Swift 3

解决错误。

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

在Xcode 9 beta中。进入项目设置,构建设置,搜索Swift语言版本。在Xcode 9中,你必须指定你是使用Swift 3.2还是Swift 4。

在我的情况下,我只做以下事情

选择项目目标=>进入构建设置=>搜索“Swift语言版本”=>给出当前Swift版本的值

这就是它已经解决了我的问题

Follow This Image

我得到了同样的错误。我尝试搜索“使用传统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.)

只需要检查以下设置

文件→工作空间设置->

1 -勾选“没有显示关于构建系统已弃用的诊断问题”;

2 -将构建系统设置为遗留构建系统(共享工作空间)

3 -将构建系统设置为遗留构建系统(Pre-User Workspace)