Xcode 8 Beta 3使用传统的Swift问题
我在Xcode 8 Beta 3中有一个Objective-C项目。由于更新,每当我尝试构build我收到以下错误:
需要为使用Swift的目标正确configuration“使用旧版Swift语言版本”(SWIFT_VERSION)。 使用[编辑>转换>至当前Swift语法…]菜单select一个Swift版本,或者使用Build Settings编辑器直接configuration构build设置。
有没有人遇到过这个? 由于这是一个Objective-C项目,所以没有构build设置来configurationSwift。 我也确定没有项目依赖项或CocoaPods使用Swift。 我唯一的解决scheme是使用Beta 2.任何想法我可以解决这个问题?
我还应该提到我正在运行OSX 10.12 Beta 2。
如果您正在使用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
设置。
我只是find了解决这个问题的方法。
转至项目或库的“生成”设置,并将“未指定的Swift语言版本”的“Swift Compiler Version”属性设置为“是”或“否”。
我一直在忽略这个问题,现在只是在处理其他的东西 – 我终于find了解决我的问题。
由于我的项目是Objective-C,我想也许我正在使用的一个Pod是使用Swift,我检查了每个Pod,没有一个是。
最后的解决scheme是,我的Core Data模型被设置为在Swift中生成代码,即使我已经在File> New> NSManagedObjectSubclass菜单中手动生成了它们。 我所要做的就是把它切换到Objective-C。
这个问题在Xcode-8.1中也是可见的。 当我们添加新的目标像扩展或小工具和第三方库被集成在新的目标与cocopods的帮助下。 Pod安装后 。 我们可以面对同样的错误如上。
将每个库生成设置中的使用传统Swift语言版本更改为
没有 。
如果您使用Xcode 8或更高版本
- 转到生成设置
- find使用传统的迅捷语言版本
- 是 – Swift 2.3
- 没有 – Swift 3.0
在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
我正在开发一个混合了Objective-C和Swift代码的项目,我以前使用Swift版本2.3,升级到Swift 3之后,我无法构build项目。 Xcode抱怨提到的错误信息。
显然,在我的project.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;
似乎修补程序级别版本说明符太具体。
如果在项目中使用老版本的swift或任何第三方,请将“使用旧版Swift语言版本”设置为“YES”。 如果您的项目升级到最新的版本,请select“否”。 如果你没有configuration你的swift版本,每次更新和安装后,Pod框架都需要指定这个。
在我的情况下,我只是做以下的事情
select项目目标=>转到生成设置=>search“Swift语言版本”=>给值当前的Swift版本
这就是所有它已经解决了我的问题
我实际上不得不search“Legacy Swift”,以便能够将其从未指定更改为“是”。当我简单地向下滚动到上述部分时,我无法更改它。 我希望这会帮助别人。
我的项目是用Swift编写的。 我用fastlane
得到了同样的错误。 发生了什么事是我的Xcode自动更新,所以我不得不更新我的项目Swift 3.0。 有很多错误。 修复和debugging花费了太多的时间,这个时候并不值得,所以我决定安装旧版本的Xcode。 将我的代码恢复到2.3。 然后fastlane beta
不工作了。 事实certificate,我需要将命令行工具设置为7.3。
我得到了同样的错误。 我尝试search“使用传统的Swift语言版本”,但没有find。 我正在使用Xcode 8.3.3在冲浪太多后,我发现这个解决scheme,这对我工作。
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.)
如果将ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES更改为NO仍然无效,那是因为xcode问题,而不是您的问题。 执行以下步骤:
1.将警告目标上的ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES属性更改为YES
2.然后它会在左栏上显示警告,build议您更改为swift 3.0
然后改回NO。 重build项目,Xcode终于检测到你的改变了!
在这种情况下解决的问题!
我遇到了同样的问题,并通过执行以下操作来解决问题:
在Project> Build Settings中:
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中将Legacy Swift Language Version设置为YES,那么XCode将使用Swift 2.3作为该项目的目标。
在尝试复杂的解决scheme之前,如果您是Cocoapods的新手,并且遇到此问题,则需要进行基本检查。
您可能需要:
- 再次打开您的Podfile
- 检查平台的线是否未用“#”注释掉。 它应该最终看起来像这样:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)
- 保存您的Podfile,closuresXcode,再次运行
pod install
- 打开你的project.xcworkspace
也许就是这样。
如果没有,你可以去;;)
在更新到xcode 8.3.2之后,我遇到了同样的问题,但是“使用传统的Swift语言”选项已经消失了。 这似乎是现在改变的select:
与Alamofire和其他库一起使用此修复程序,一切正常。
项目和目标的项目build立设置做下面两个。
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES And Swift Compiler - Version = Swift 3
转到最新的Swift 3
。
错误已解决。
如果它解决了你的错误修复,请喜欢它。
在Xcode 9testing版中。 转到项目设置,生成设置,searchSwift语言版本。 在Xcode 9中,您必须指定是否使用Swift 3.2或Swift 4。