Xcode 8 Beta 3 使用旧版 Swift 问题
Xcode 8 Beta 3 Use Legacy Swift issue
我在 Xcode 8 Beta 3 中有一个 Objective-C 项目。自更新以来,每当我尝试构建时,我都会收到以下错误:
“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.
有人遇到过这种情况吗?由于它是一个 Objective-C 项目,因此没有构建设置来配置 Swift。我还确保 none 的项目依赖项或 CocoaPods 正在使用 Swift。我唯一的解决办法是使用 Beta 2。有什么办法可以解决这个问题吗?
我还应该提到我是 运行 OSX 10.12 Beta 2.
我刚刚找到了修复它的方法。
转到项目或库的构建设置并将Swift编译器版本属性"Use Legacy Swift Language Version"从未指定设置为是或否。
如果您正在使用 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
设置。
我已经忽略这个问题一段时间了,同时一直在处理其他事情 - 我终于找到了解决问题的办法。
因为我的项目是 Objective-C,所以我想也许我正在使用的 Pods 之一正在使用 Swift,我检查了每个 Pod,其中 none 是。
最终的解决方案是我的核心数据模型被设置为在 Swift 中生成代码,即使我一直在文件 > 新建 > NSManagedObjectSubclass 菜单中手动生成它们。我所要做的就是将其切换为 Objective-C.
如果您在项目或任何 swift 第 3 方中使用旧版本的 swift,请将 "Use Legacy Swift Language Version" 设置为 "YES"。 "No" 如果您的项目更新到当前 swift 版本。
如果你没有配置你的 swift 版本,每次更新和安装后,Pod 框架都需要指定它。
在 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" 才能将其从未指定更改为 "Yes" 当我简单地向下滚动到上述部分时,我无法更改它.我希望这会对某人有所帮助。
此问题在 Xcode-8.1 中也可见。当我们添加新的 Target 时,比如 Extension 或 Widget,第三方库在 cocopods 的帮助下集成到新的 target 中。在 Pod install 之后。我们可能会遇到与上述相同的错误。
将每个库构建设置中的使用旧版Swift语言版本更改为
No.
我的项目是用Swift写的。我在 fastlane
中遇到了同样的错误。发生的事情是我的 Xcode 自动更新,所以我不得不将我的项目更新到 Swift 3.0。有很多错误。修复和调试花费了太多时间,当时不值得,所以我决定安装旧版本 Xcode。将我的代码恢复为 2.3。然后 fastlane beta
不再工作了。事实证明,我需要将命令行工具设置为 7.3。
我正在开发一个混合了 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;
似乎补丁级别版本说明符太具体了。
如果你把ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
改成NO
还是不行,那是因为xcode的问题,不是你的问题。执行以下步骤:
1.Change ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
属性 成为警告目标YES
2.then 它会在左侧栏显示警告,建议您更改为 swift 3.0
3.then 改回 NO
。重建项目,xcode 终于检测到您对 NO
!
的更改
本例问题解决!
我遇到了同样的问题并通过执行以下操作解决了它:
在项目 > 构建设置中:
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 。
从XCode 8 开始,即使XCode 8 使用swift 3.x 作为默认swift 版本,您也可以使用swift 2.3 .要使用 swift 2.3,只需从 Build Setting 中将标志 Use Legacy Swift Language Version 设为 YES,然后 XCode 将为该项目目标使用 Swift 2.3。
如果您使用的是 Xcode 8 或更高版本
- 转到构建设置
- 查找使用旧版 swift 语言版本
- 是 - Swift 2.3
- 否 - Swift 3.0
在尝试复杂的解决方案之前,如果您是 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
也许就是这样。
如果没有,你可以往上看;-)
我在更新到 xcode 8.3.2 后遇到了同样的问题,但是选项 "Use Legacy Swift Language" 消失了。这似乎是现在更改的选项:
将此修复程序与 Alamofire 和其他库一起使用,一切正常。
转到项目的项目构建设置和目标执行以下两个操作。
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version = Swift 3
更改为最新 Swift 3
.
错误已解决。
如果解决了您的错误,请点赞。
在 Xcode 9 测试版中。转到项目设置、构建设置,搜索 Swift 语言版本。在 Xcode 9 中,您必须指定您使用的是 Swift 3.2 还是 Swift 4.
在我的例子中,我只需执行以下操作
选择项目目标=>转到构建设置=>搜索“Swift语言版本”=>给值当前Swift版本
就这些它已经解决了我的问题
我遇到了同样的错误。我尝试搜索 "Use Legacy Swift Language Version",但没有找到。 我正在使用 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.)
我在 Xcode 8 Beta 3 中有一个 Objective-C 项目。自更新以来,每当我尝试构建时,我都会收到以下错误:
“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.
有人遇到过这种情况吗?由于它是一个 Objective-C 项目,因此没有构建设置来配置 Swift。我还确保 none 的项目依赖项或 CocoaPods 正在使用 Swift。我唯一的解决办法是使用 Beta 2。有什么办法可以解决这个问题吗?
我还应该提到我是 运行 OSX 10.12 Beta 2.
我刚刚找到了修复它的方法。
转到项目或库的构建设置并将Swift编译器版本属性"Use Legacy Swift Language Version"从未指定设置为是或否。
如果您正在使用 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
设置。
我已经忽略这个问题一段时间了,同时一直在处理其他事情 - 我终于找到了解决问题的办法。
因为我的项目是 Objective-C,所以我想也许我正在使用的 Pods 之一正在使用 Swift,我检查了每个 Pod,其中 none 是。
最终的解决方案是我的核心数据模型被设置为在 Swift 中生成代码,即使我一直在文件 > 新建 > NSManagedObjectSubclass 菜单中手动生成它们。我所要做的就是将其切换为 Objective-C.
如果您在项目或任何 swift 第 3 方中使用旧版本的 swift,请将 "Use Legacy Swift Language Version" 设置为 "YES"。 "No" 如果您的项目更新到当前 swift 版本。 如果你没有配置你的 swift 版本,每次更新和安装后,Pod 框架都需要指定它。
在 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" 才能将其从未指定更改为 "Yes" 当我简单地向下滚动到上述部分时,我无法更改它.我希望这会对某人有所帮助。
此问题在 Xcode-8.1 中也可见。当我们添加新的 Target 时,比如 Extension 或 Widget,第三方库在 cocopods 的帮助下集成到新的 target 中。在 Pod install 之后。我们可能会遇到与上述相同的错误。
将每个库构建设置中的使用旧版Swift语言版本更改为
No.
我的项目是用Swift写的。我在 fastlane
中遇到了同样的错误。发生的事情是我的 Xcode 自动更新,所以我不得不将我的项目更新到 Swift 3.0。有很多错误。修复和调试花费了太多时间,当时不值得,所以我决定安装旧版本 Xcode。将我的代码恢复为 2.3。然后 fastlane beta
不再工作了。事实证明,我需要将命令行工具设置为 7.3。
我正在开发一个混合了 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;
似乎补丁级别版本说明符太具体了。
如果你把ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
改成NO
还是不行,那是因为xcode的问题,不是你的问题。执行以下步骤:
1.Change ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
属性 成为警告目标YES
2.then 它会在左侧栏显示警告,建议您更改为 swift 3.0
3.then 改回 NO
。重建项目,xcode 终于检测到您对 NO
!
本例问题解决!
我遇到了同样的问题并通过执行以下操作解决了它:
在项目 > 构建设置中:
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
从XCode 8 开始,即使XCode 8 使用swift 3.x 作为默认swift 版本,您也可以使用swift 2.3 .要使用 swift 2.3,只需从 Build Setting 中将标志 Use Legacy Swift Language Version 设为 YES,然后 XCode 将为该项目目标使用 Swift 2.3。
如果您使用的是 Xcode 8 或更高版本
- 转到构建设置
- 查找使用旧版 swift 语言版本
- 是 - Swift 2.3
- 否 - Swift 3.0
在尝试复杂的解决方案之前,如果您是 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
也许就是这样。
如果没有,你可以往上看;-)
我在更新到 xcode 8.3.2 后遇到了同样的问题,但是选项 "Use Legacy Swift Language" 消失了。这似乎是现在更改的选项:
将此修复程序与 Alamofire 和其他库一起使用,一切正常。
转到项目的项目构建设置和目标执行以下两个操作。
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version = Swift 3
更改为最新 Swift 3
.
错误已解决。
如果解决了您的错误,请点赞。
在 Xcode 9 测试版中。转到项目设置、构建设置,搜索 Swift 语言版本。在 Xcode 9 中,您必须指定您使用的是 Swift 3.2 还是 Swift 4.
在我的例子中,我只需执行以下操作
选择项目目标=>转到构建设置=>搜索“Swift语言版本”=>给值当前Swift版本
就这些它已经解决了我的问题
我遇到了同样的错误。我尝试搜索 "Use Legacy Swift Language Version",但没有找到。 我正在使用 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.)