如何查看我使用的是哪个版本的Swift?


566

我刚刚在Xcode中创建了一个新的Swift项目。我想知道它正在使用哪个版本的Swift。

如何在Xcode或终端中查看我在项目中使用的Swift的哪个版本?


7
除了stackoverflow.com/questions/29140476/…的标题外,我发现该问题没有相似之处,足以将其标记为重复。这个问题的本质不是如何以编程方式找到Swift的版本,而是如何以通用方式(通过终端或Xcode等)找到Swift的版本。这是一个很大的差异。
David Snabel '16

Answers:


405

项目构建设置有一个块“ Swift Compiler-Languages”,它以键值格式存储有关Swift语言版本的信息。它将通过一个勾号显示Xcode和活动版本的所有可用(受支持的)Swift语言版本。

项目►(选择项目目标)►构建设置►(在搜索栏中键入'swift_version')Swift编译器语言►Swift语言版本►单击“语言”列表将其打开(列表中的任何一个都会出现一个勾号) -item,它将是当前的快速版本)。

查看此快照,以方便理解:

突出描述区域的xcode


借助以下代码,您可以以编程方式找到您的项目支持的Swift版本。

#if swift(>=5.2)
print("Hello, Swift 5.2")

#elseif swift(>=5.1)
print("Hello, Swift 5.1")

#elseif swift(>=5.0)
print("Hello, Swift 5.0")

#elseif swift(>=4.2)
print("Hello, Swift 4.2")

#elseif swift(>=4.1)
print("Hello, Swift 4.1")

#elseif swift(>=4.0)
print("Hello, Swift 4.0")

#elseif swift(>=3.2)
print("Hello, Swift 3.2")

#elseif swift(>=3.0)
print("Hello, Swift 3.0")

#elseif swift(>=2.2)
print("Hello, Swift 2.2")

#elseif swift(>=2.1)
print("Hello, Swift 2.1")

#elseif swift(>=2.0)
print("Hello, Swift 2.0")

#elseif swift(>=1.2)
print("Hello, Swift 1.2")

#elseif swift(>=1.1)
print("Hello, Swift 1.1")

#elseif swift(>=1.0)
print("Hello, Swift 1.0")

#endif

这是使用Playground(使用Xcode 11.x)的结果

在此处输入图片说明


10
我认为这是正确的答案。比呼叫终端更容易。(尤其是如果您安装了不同版本的Xcode)
Mike Keskinov

17
这是正确的答案,因为快速版本是按每个目标配置的。
安德鲁·保罗·西蒙斯

2
我在使用Xcode 8.1的项目中看不到这种特性
注销

6
您可以在xcode的最新版本上看到此属性
Parkhya Dev

1
@JonMcClung-Xcode 10.1也提供相同的选项。我刚刚检查了一下。
克鲁纳尔

500

我在终端中说的是:

$ xcrun swift -version

Xcode 6.3.2的输出是:

Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)

当然,这假定您xcrun正确地指向了您的Xcode副本。如果像我一样,您在使用Xcode的多个版本,那可能会令人担忧!为了确保它是,说

$ xcrun --find swift

并查看显示给您的Xcode的路径。例如:

/Applications/Xcode.app/...

如果那是您的Xcode,则来自的输出-version是准确的。如果需要重新指向xcrun,请使用Xcode的“位置”首选项窗格中的“命令行工具”弹出菜单。


8
您还可以xcode-select -p用于打印xcrun将使用的Xcode的路径,并sudo xcode-select -s /path/to/Xcode.app进行更改。
杰克·劳伦斯

4
我刚刚开始学习ios开发,而xcode既不让您选择swift的版本,也不让您从GUI知道版本,我感到很惊讶。
亚历克斯

@RadekWilczak我不知道您所说的“应该是”。我只是复制了发布的命令并将其粘贴到Terminal中,然后单击Return,它就可以了。所以也许还有另一种选择,但是我说的没错。
马特

1
这给了我错误的答案。因为为每个目标配置了swift。最佳答案请参见@Krunal的以下答案。
安德鲁·保罗·西蒙斯

我同意每个项目的所有“正确方法是设置SWIFT_VERSION”。但是,在早期的Xcode版本(如8.2)中,它没有在UI中明确说明项目中支持的XCode版本,而在UI中仅包含“使用旧版Swift语言版本”(是,否,未指定)。命令行方法对于快速查询可用的最大快速版本的答案非常有用。
truedat101

104

打开终端并输入:

swift -version

12
这不一定是Xcode看到的swift版本。此外,您无需Xcode就可以快速进行操作。
asiby

64

从Xcode 8.3开始,您的目标所使用的Build Settings密钥Swift Language Version的键值为swift版本。

对于较旧的Xcode,请使用此解决方案,打开终端并键入以下命令

情况1:您仅安装了一个Xcode应用程序

swift -version

情况2:您已经安装了多个Xcode应用程序

  • 切换active developer directory(用您要检查快速版本的应用程序目录中的Xcode_7.3.appXcode应用程序文件名替换以下命令)

     sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
  • 然后

     swift -version

注意:从Xcode 8到Xcode 8.2.x,即使Xcode 8使用swift 3.x作为默认的swift版本,您也可以使用swift 2.3。要使用swift 2.3,只需将flag设置Use Legacy Swift Language VersionYESfrom Build Setting,XCode将使用Swift 2.3作为该项目目标。


21

您可以查看并选择Xcode在以下版本中使用的Swift版本:

目标 -> 构建设置 -> Swift语言版本

在此处输入图片说明

Xcode 8.3和Xcode 9中提供了此功能(尚未检查较旧的版本)


2
Swift Language Version在我的Xcode 8.2.1项目中没有作为设置出现。它确实有Use Legacy Swift Language Version
克里斯·普林斯

1
@ChrisPrince是的,直到以前的Xcode 8.x版本中的Xcode 8.3 ....才Swift Language Version存在,= Swift 3和= Swift 2.3Build SettingsUse Legacy Swift Language VersionNoYes
William GP

17

这篇reddit帖子对我有帮助:https : //www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8默认使用Swift 3.0。但是您可以打开Swift 2.3。转到项目的“构建设置”,并将“使用旧版Swift语言版本”设置为“是”。

好老reddit :)


1
我无法通过搜索“使用旧版Swift语言版本”或“旧版”找到此内容
JerryZhou

我正在使用最新的Xcode版本8.3.2(8E2002),并在Swift语言版本中使用swift 3。现在,我想将其更改为swift 2.3,但是只有一个选项swift 3.0,第二个未指定。所以请您指导如何做到这一点?在我当前的项目中获得快速2.3?@alexisSchreier
Arsal

14

要查看计算机上安装的swift的默认版本,然后从命令行输入以下内容:

swift --version

Apple Swift版本4.1.2(swiftlang-902.0.54 clang-902.0.39.2)

目标:x86_64-apple-darwin17.6.0

这很可能是您已安装的Xcode的应用程序商店版本中包含的版本(除非已更改)。

如果要确定特定版本的Xcode(例如beta)正在使用的Swift的实际版本,请从命令行调用Xcode捆绑包中的swift二进制文件,并将参数--version传递给它。

/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version

Apple Swift版本4.2(swiftlang-1000.0.16.7 clang-1000.10.25.3)

目标:x86_64-apple-darwin17.6.0



1

我正在使用Google Colab的Swift。这是在Colab中检查它的方法。

!/swift/toolchain/usr/bin/swift --version

结果是 5.0-dev


-1

额外的贡献:我正在使用自定义的node.js脚本来提取干净的字符串以用于Jazzy文档。如果您可以在开发过程中找到可以使用它的地方,则可以使用它:

从Bash脚本调用:

#!/bin/bash
swiftversion=$(node SwiftVerSlicer.js "${xcrun swift -version}");
echo $swiftversion

SwiftVerSlicer.js:

// begin script
const inputString = `${process.argv[2]}`
let searchTerm = (inputString.indexOf('(') - 1)//-1 cause whitespace
let version = inputString.slice(0,searchTerm)
console.log(version)
// end script

当然,您也可以使用正则表达式,但是可以做任何您想做的事情:]


-1

只需在终端中输入swift命令,它将显示版本,同时登录到Swift控制台。(如下所示)

System-IOSs-MacBook-Air:~ system$ swift
Welcome to Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7).
Type :help for assistance.


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.