Xcode 9 SWIFT Language Version (SWIFT_VERION)

我最近将 xcode 更新到了版本9。在此之前,在 Xcode 8.x 中,每当我使用 pod update时,它都会向我显示一个更新代码,将代码转换为 Swift 3并解决错误。但现在它给了我一个错误:

必须设置“ SWIFT Language Version”(SWIFT _ VERION)生成设置 为使用 Swift 的目标设置一个支持的值。此设置可以是 在生成设置编辑器中设置。

对于这个错误,我尝试了 Build Settings > Swift Language Version,它是 Swift 3.2 但是由于更新调用已经重新安装了一些类似 Alamofire 的软件,并且要求安装 Xcode 8. x 以将代码转换成 Swift 3,所以我是否需要安装一个附加版本的最新 Xcode?如果是,那么如何使用 Xcode 9安装 Xcode 8?

138802 次浏览

回答你的问题:
您可以从 苹果下载门户下载 Xcode 8.3.3(或参见: 在哪里下载旧版本的 Xcode)下载 Xcode 8.x,如果您有高级开发人员帐户(apple id)。您可以在单一(mac)系统中安装和使用 Xcode 9和 Xcode 8.x。(确保你有支持两个版本的 Xcode,与终端(见: 如何安装“命令行工具”))


提示: 如何迁移代码 Xcode 9兼容的 Swift 版本(Swift 3.2或4)
Xcode 9只允许从 Swift 3.0Swift 3.2/4.0的转换/迁移。因此,如果您的项目的 Swift 语言的当前版本低于3.0,那么您必须迁移您的代码在 Swift 3兼容版本使用 Xcode 8.x。

这是 Xcode 9在迁移期间标识 Swift 语言低于3.0时显示的常见错误消息。

enter image description here


Xcode 9和 Xcode 8都支持 Swift 3.2。

例如: 选择你的项目目标; 例如: 建立设置; 例如: 在搜索栏中输入“快速”; 例如: 快速编译器语言; 例如: 快速语言版本; 例如: 点击语言列表打开它。

enter image description here



使用 Xcode 8将您的源代码从 Swift 2.0转换为3.2,然后继续使用 Xcode 9(Swift 3.2或4)。


为了更容易地迁移代码,请遵循以下步骤: (它将帮助您转换为 Xcode Tool 支持的最新版迅捷)

Xcode: Menus: 编辑外壳到当前的快速语法

enter image description here

For Objective C Projects created using Xcode 8 and now opening in Xcode 9, it is showing the same error as mentioned in the question.

To fix that, Press the + button in Build Settings and select Add User-Defined Setting as shown in the image below

build setting

然后在新创建的行中添加 SWIFT_VERSION作为键,3.2作为值,如下所示。

enter image description here

它将修复目标 c 项目的错误。

在我的情况下,所有的警告消失后,我直接改变迅速版本从2.x 到4.0在构建设置除了两个警告。

这些警告与 myprojectnameTestsmyprojectnameUITests文件夹有关。我没有注意到,我认为它与从 Xcode 7到 Xcode 9的直接移民有关,我认为我不能解决这个问题,我应该安装错过的 Xcode 8版本。

在我的例子中,我删除了这些文件夹,所有的警告都消失了,但是您可以重新创建这个文件夹,并使用以下方法包含:

file > new > target > (uitest or unittest extensions)

并使用本文创建测试用例: Https://developer.apple.com/library/content/documentation/developertools/conceptual/testing_with_xcode/chapters/04-writing_tests.html

我只需点击最新的迅捷转换按钮,设置应用程序目标构建设置-> 迅捷语言版本: 迅捷4.0,

希望这个能帮上忙。

当您将核心数据添加到现有项目时,可能会发生这种情况。
检查:
< Name >/< Name > . xcdatamodeld/< Name > . xcdatamodel/content < br > file.
这个文件包含一个条目“ source Language”(默认情况下)可能已经被设置为“ Swift”。

我是在 Xcode 10中创建了一个新的 Objective-C 项目之后得到它的,这是在我向该项目添加了一个 Core Data 模型文件之后得到的。

我找到了两个解决办法:

  1. The Easy Way: Open the Core Data model's File Inspector (-1) and change the language from Swift to Objective-C

Change Core Data model language

  1. 更长,更危险的方法

该模型包含一个“ content”文件,其中有以下一行:

<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)文件并执行“显示包内容”操作

另外: 更改模型的语言将停止 Xcode 在 Swift 中生成托管对象子类文件。

当其他方法都不起作用的时候,这个解决方案是有效的:

我花了一个多星期的时间来转换整个项目,并得出了以下解决方案:

首先,从项目中解除对 cocopods 的依赖,然后开始将项目转换为最新的快速版本。

转到终端中的项目目录并键入:

pod deintegrate

这将从项目中分离出 Cocopods,并且不会在项目中留下任何 Cocopods 的痕迹。但同时,它不会删除 xcworkspace 和 podfiles。他们在场也没关系。

现在您必须打开 xcodeproj (而不是 xcworkspace) ,并且您将得到许多错误,因为您在主项目中调用了 cocoapods 依赖方法。

因此,要消除这些错误,您有两个选择:

  1. 注释掉你在 cocoapods 库中使用的所有代码。
  2. 创建一个具有类似 cocopods 库的虚方法的包装器类,然后调用它。

一旦所有的错误得到删除,你可以转换代码到最新的快速版本。

有时,如果出现奇怪的错误,请尝试清除派生数据,然后再试一次。

也许你需要下载工具链。 当您没有正确的快速编译器版本时,就会发生此错误。