我最近将xcode更新到版本9.在Xcode 8.x之前,每当我使用pod update
时,它会向我显示一个更新代码,用于将代码转换为Swift 3并执行此操作来解决错误。但现在它给了我这个错误:
必须设置“Swift语言版本”(SWIFT_VERSION)构建设置 到使用Swift的目标的受支持值。此设置可以是 在构建设置编辑器中设置。
对于此错误,我尝试了Build Settings > Swift Language Version
,它是Swift 3.2
但是,由于更新调用重新安装了一些像Alamofire这样的pod,并且它说要安装Xcode 8.x将代码转换为Swift 3,所以我是否需要安装带有最新Xcode的附加版本?如果是,那么如何使用Xcode 9安装Xcode 8?
答案 0 :(得分:161)
回答您的问题:
如果您是高级开发者帐户(苹果ID),可以从Apple Download Portal或Download Xcode 8.3.3下载Xcode 8.x(或参见:Where to download older version of Xcode)。你可以安装&在单(mac)系统中使用Xcode 9和Xcode 8.x. (确保您Command Line Tools
支持两种版本的Xcode,以便与终端配合使用(请参阅:How to install 'Command Line Tool'))
提示:如何迁移代码Xcode 9兼容的Swift版本(Swift 3.2或4)
Xcode 9仅允许从Swift 3.0
转换/迁移到Swift 3.2/4.0
。因此,如果项目的当前Swift语言版本低于3.0,则必须使用Xcode 8.x在Swift 3兼容版本中迁移代码。
这是Xcode 9在迁移过程中识别出低于3.0的Swift语言时显示的常见错误消息。
SWift 3.2支持Xcode 9& Xcode 8都是。
项目►(选择您的项目目标)►构建设置►(在搜索栏中键入' swift')Swift编译器语言►Swift语言版►单击语言列表将其打开。
使用Xcode 8将源代码从Swift 2.0转换为3.2,然后继续使用Xcode 9(Swift 3.2或4)。
为了更轻松地迁移代码,请按照以下步骤操作:(它将帮助您转换为Xcode工具支持的swift的最新版本)
Xcode:菜单:编辑▶隐藏▶到当前的Swift语法
答案 1 :(得分:50)
对于使用Xcode 8创建并且现在在Xcode 9中打开的Objective C项目,它显示的问题与问题中提到的相同。
要解决此问题,请按构建设置中的+按钮,然后选择添加用户自定义设置,如下图所示
然后在新行中创建添加SWIFT_VERSION
作为键,3.2
作为值,如下所示。
它将修复目标c项目的错误。
答案 2 :(得分:2)
在我向项目中添加了Core Data模型文件之后,在Xcode 10中创建了一个新的Objective-C项目之后,我才得到了这一点。
我发现了两种解决方法:
该模型包含带有以下内容的“内容”文件:
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
其中有一个sourceLanguage="Swift"
条目。将其更改为sourceLanguage="Objective-C"
,错误消失。
要查找“内容”文件,请右键单击Xcode中的.xcdatamodeld
,然后执行“在Finder中显示”。右键单击实际的(Finder)文件,然后执行“显示软件包内容”
此外:更改模型的语言将阻止Xcode在Swift中生成托管对象子类文件。
答案 3 :(得分:1)
将Core Data添加到现有项目中时可能会发生这种情况。
检查:
<名称> / <名称> .xcdatamodeld / <名称> .xcdatamodel /内容
文件。
该文件包含一个条目“ sourceLanguage”(默认情况下)可能已设置为“ Swift”。将其更改为“ Objective-C”。
答案 4 :(得分:0)
我只需点击最新的swift转换按钮并设置App target build setting-&gt; Swift语言版本:swift 4.0,
希望这会有所帮助。
答案 5 :(得分:0)
我花了一个多星期的时间来转换整个项目,并在下面找到了解决方案:
首先,从项目中取消整合cocopods依赖项,然后开始将项目转换为最新的快速版本。
转到终端中的项目目录并输入:
pod deintegrate
这将取消项目中的共足类动物的整合,项目中将不会留下任何痕迹。但同时,它不会删除xcworkspace和podfile。没关系,没关系。
现在,您必须打开xcodeproj(而不是xcworkspace),因为在主项目中调用了cocoapods依赖方法,您会遇到很多错误。
因此,要消除这些错误,您有两种选择:
一旦所有错误都被清除,您可以将代码转换为最新的快速版本。
有时候,如果您遇到奇怪的错误,请尝试清除派生数据,然后重试。
答案 6 :(得分:0)
也许您需要下载工具链。 如果您没有正确版本的swift编译器,则会发生此错误。
答案 7 :(得分:-4)
在我的情况下,除了两个警告之外,我在构建设置中直接将swift版本从2.x更改为4.0后,所有警告都消失了。
这些警告与myprojectnameTests
和myprojectnameUITests
文件夹有关。我没有注意到,我认为它与从Xcode 7到Xcode 9的直接移民有关,我认为我无法解决这个问题,我应该安装错过的Xcode 8版本。
在我的情况下,我删除了这些文件夹并且所有警告都消失了,但您可以重新创建此文件夹并包含以下内容:
file > new > target > (uitest or unittest extensions)