Xcode 9 Swift语言版(SWIFT_VERSION)

Cha*_*lha 108 xcode ios swift swift3 xcode9

我最近将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?

Kru*_*nal 169

回答你的问题:
你可以从Apple下载门户下载Xcode 8.x 或下载Xcode 8.3.3(或参见:在哪里下载旧版本的Xcode),如果你有高级开发者帐户(苹果ID).您可以在单(mac)系统中安装和使用Xcode 9和Xcode 8.x. (确保您Command Line Tools支持两个版本的Xcode,以便与终端一起使用(请参阅:如何安装'命令行工具'))


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

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

在此输入图像描述


Xcode 9和Xcode 8都支持Swift 3.2.

项目►(选择你的项目目标)►生成设置►(在搜索栏键入"SWIFT")雨燕编译器语言►斯威夫特语言版本►单击语言列表中打开它.

在此输入图像描述



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


为了更轻松地迁移代码,请按照下列步骤操作:(它将帮助您转换为Xcode工具支持的最新版本的swift)

Xcode:菜单:编辑▶隐藏▶到当前的Swift语法

在此输入图像描述

  • 如果你来到这里是因为你现在(2018年12月)只是扫除了一些Swift 2代码,你会很失望地得知Xcode 8不能在Mojave上运行. (8认同)

R. *_*han 51

对于使用Xcode 8创建的Objective C项目,现在在Xcode 9中打开,它显示与问题中提到的相同的错误.

要解决此问题,请按"构建设置"中的+按钮,然后选择"添加用户定义的设置",如下图所示

构建设置

然后在新行中创建add SWIFT_VERSIONas key和3.2value,如下所示.

在此输入图像描述

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

  • 如果您在使用CocoaPods时遇到此问题,则可能需要将此构建设置添加到pods.xcodeproject部分. (9认同)
  • 这对我有帮助。谢谢。 (2认同)

nev*_*ing 5

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

我找到了两种方法来解决这个问题:

  1. 简单方法:打开 Core Data 模型的文件检查器 ( ??- 1) 并将语言从 Swift 更改为 Objective-C

更改核心数据模型语言

  1. 更长更危险的方法

该模型包含一个带有以下行的“内容”文件:

<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
Run Code Online (Sandbox Code Playgroud)

里面有一个sourceLanguage="Swift"入口。将其更改为sourceLanguage="Objective-C",错误就会消失。

要找到“内容”文件,请右键单击 .xcdatamodeldXcode 中的“在 Finder 中显示”。右键单击实际的(Finder)文件并执行“显示包内容”

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