Xcode 8 Beta 3使用传统Swift问题

Xcode 8 Beta 3使用传统Swift问题,swift,xcode8,xcode8-beta3,Swift,Xcode8,Xcode8 Beta3,我在Xcode 8 Beta 3中有一个Objective-C项目。自更新以来,无论何时尝试构建,我都会收到以下错误: 对于使用Swift的目标,需要正确配置“使用传统Swift语言版本”(Swift\U版本)。使用[编辑>转换>到当前Swift语法…]菜单选择Swift版本,或使用生成设置编辑器直接配置生成设置 有人遇到过这种情况吗?由于它是一个Objective-C项目,因此没有用于配置Swift的构建设置。我还确保没有任何项目依赖项或cocoapod使用Swift。我唯一的解决方案就是使用

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

对于使用Swift的目标,需要正确配置“使用传统Swift语言版本”(Swift\U版本)。使用[编辑>转换>到当前Swift语法…]菜单选择Swift版本,或使用生成设置编辑器直接配置生成设置

有人遇到过这种情况吗?由于它是一个Objective-C项目,因此没有用于配置Swift的构建设置。我还确保没有任何项目依赖项或cocoapod使用Swift。我唯一的解决方案就是使用Beta 2。有没有办法解决这个问题


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

我刚刚找到了一种解决方法

转到项目或库的生成设置,并将Swift编译器版本属性“使用传统Swift语言版本”从“未指定”设置为“是”或“否”


如果您正在使用CocoaPods,并且希望在每次执行
pod安装时自动修复它,那么您可以将以下行添加到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
编辑:如果您使用CocoaPods v1.1.1或更高版本,此问题现在已修复。
不要忘记从您的主要项目目标中删除
始终嵌入\u SWIFT\u标准\u库设置。

我已经忽略了这个问题一段时间了,同时正在处理其他问题-我终于找到了解决问题的方法

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

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

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

将下面的代码添加到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

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

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

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


我的项目是用Swift编写的。我在
fastlane
中也遇到了同样的错误。发生的事情是我的Xcode自动更新,所以我不得不将我的项目更新为Swift 3.0。我犯了很多错误。修复和调试花费了太多的时间,当时不值得,所以我决定安装一个旧版本的Xcode。将代码还原为2.3。然后,
fastlane测试版
就不起作用了。事实证明,我需要将命令行工具设置为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
所以,我通过将项目pbxproj文件中的Swift版本更改为:

SWIFT_VERSION = 3.0;

似乎修补程序级别的版本说明符太具体了。

如果将
始终\u嵌入\u SWIFT\u标准\u库
更改为
仍然不起作用,这是因为xcode问题,而不是您的问题。执行以下步骤:

1.将警告目标上的
ALWAYS\u EMBED\u SWIFT\u STANDARD\u LIBRARIES
属性更改为
YES

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

3.然后切换回
。重新构建项目时,xcode最终检测到您对
否的更改


这个问题解决了

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

在项目>生成设置中:

始终嵌入Swift标准库=$(继承)
使用传统Swift语言版本=是

然后在我的播客文件中:

config.build\u设置['SWIFT\u VERSION']=“3.0”

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


编译过程中最晦涩和实际取得进展的是按照建议将Podfile中的SWIFT_版本从3更改为3.0。

从XCode 8开始,您可以使用SWIFT 2.3,即使XCode 8使用SWIFT 3.x作为默认SWIFT版本。要使用swift 2.3,只需在构建设置中将标志use Legacy swift Language Version打开为YES,然后XCode将使用swift 2.3作为该项目目标。

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

  • 转到生成设置
  • 查找并使用遗留swift语言版本
  • 是-Swift 2.3
  • 否-Swift 3.0

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

    您可能需要:

    • 再次打开你的播客文件
    • 检查平台的行是否没有用“#”注释掉。它最终应该看起来像:
    platform:ios,'10.1'#在这里输入正确的版本,没有平台
    使用#u框架!#斯威夫特
    豆荚“MyPod”#你的平均豆荚:)

    • 保存Podfile,关闭Xcode,然后
      ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
      And
      Swift Compiler - Version  = Swift 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.)