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

How do I see which version of Swift I'm using?

提问人:David Snabel 提问时间:6/12/2015 最后编辑:LinusGeffarthDavid Snabel 更新时间:10/3/2023 访问量:289050

问:

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

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

Swift Xcode 终端

评论

11赞 David Snabel 6/6/2016
除了 stackoverflow.com/questions/29140476/ 的头衔......我发现与这个问题没有相似之处,足以将这个问题标记为重复。这个问题的本质不是如何以编程方式找到 Swift 的版本,而是如何以一般的方式(通过终端或 Xcode 等)找到 Swift 的版本。这是一个很大的区别。

答:

626赞 matt 6/12/2015 #1

我所做的是在终端中说:

$ xcrun swift -version

Xcode 6.3.2 的输出为:

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

当然,这是假设你正确地指向你的Xcode副本。如果像我一样,您正在处理多个版本的 Xcode,那可能会令人担忧!要确保它是,请说xcrun

$ xcrun --find swift

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

/Applications/Xcode.app/...

如果这是您的 Xcode,那么 的输出是准确的。如果需要重新指向,请使用 Xcode 的“位置”偏好设置面板中的“命令行工具”弹出式菜单。-versionxcrun

评论

9赞 Jack Lawrence 9/15/2015
您还可以用于打印 xcrun 将使用的 Xcode 的路径,并对其进行更改。xcode-select -psudo xcode-select -s /path/to/Xcode.app
4赞 Alex 2/8/2016
我刚开始学习 ios 开发,我很惊讶 xcode 不让你选择 swift 的版本,甚至不让你从 GUI 知道版本。
0赞 matt 9/1/2016
@RadekWilczak我不知道你说的“应该是”是什么意思。我只是复制了发布的命令并粘贴到终端中并按 Return,它就可以工作了。所以也许还有另一种选择,但我说的是没有错。
1赞 Andrew Paul Simmons 10/4/2017
这给了我错误的答案。因为 swift 是按目标配置的。请参阅以下 @Krunal 的答案以获得最佳答案。
0赞 truedat101 11/16/2018
我同意每个项目的所有“正确的方法是设置SWIFT_VERSION”。但是,在早期的 Xcode 版本(如 8.2)中,它没有在 UI 中明确说明项目中支持的 XCode 版本,而只是在 UI 中显示“使用旧版 Swift 语言版本”,并带有“是、否、未指定”。命令行方法非常有用,能够快速查询可用的最大 swift 版本的答案。
134赞 Abdulrazzaq Alzayed 6/3/2016 #2

打开终端并写入:

swift -version

评论

23赞 asiby 4/19/2017
这不一定是 Xcode 看到的 swift 版本。此外,您可以在没有 Xcode 的情况下拥有 swift。
73赞 Aditya Deshmane 7/19/2016 #3

从 Xcode 8.3 开始,目标正在使用的 swift 版本具有值的键。Build SettingsSwift Language Version

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

案例 1:您只安装了一个 Xcode 应用程序

swift -version

案例 2:您安装了多个 Xcode App

  • 开关(从 以下命令替换为所需应用程序目录中的 Xcode 应用程序文件名 检查 swift 版本)active developer directoryXcode_7.3.app

     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 to from,XCode 就会将 Swift 2.3 用于该项目目标。Use Legacy Swift Language VersionYESBuild Setting

19赞 alexisSchreier 10/14/2016 #4

这篇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赞 JerryZhou 6/8/2017
我无法通过搜索“使用旧版 Swift 语言版本”或“旧版”找到它
0赞 Arsal 6/20/2017
我在 Swift 语言版本中使用最新的 Xcode 版本 8.3.2 (8E2002) 和 swift 3。现在我想将其更改为 swift 2.3,但只有一个选项 swift 3.0 和 2nd 未指定。那么,请您指导一下这是如何实现的吗?要在我当前的项目中安装 Swift 2.3?@alexisSchreier
26赞 joern 6/9/2017 #5

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

Target -> Build Settings -> Swift 语言版本

enter image description here

这在 Xcode 8.3 和 Xcode 9 中可用(尚未检查旧版本)

评论

2赞 Chris Prince 6/14/2017
Swift Language Version在我的 Xcode 8.2.1 项目中没有作为设置出现。它确实有.Use Legacy Swift Language Version
1赞 William GP 7/14/2017
@ChrisPrince 是的,直到 Xcode 8.3 才存在......在以前的 Xcode 8.x 版本中,= Swift 3 和 = Swift 2.3Swift Language VersionBuild SettingsUse Legacy Swift Language VersionNoYes
1赞 shim 1/21/2023
我只看到主要版本,没有看到次要/补丁组件。例如,现在我只看到“Swift 5”
578赞 Krunal 9/7/2017 #6

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

项目 ► (选择您的项目目标) ► 构建设置 ► (键入 搜索栏中的“swift_version”) Swift 编译器语言 ► Swift 语言 版本 ► 单击语言列表将其打开(列表项中的任何一个上都会有一个勾号,这将是当前的 swift 版本)。

请看这个快照,以便于理解:

xcode with described areas highlighted


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

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

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

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

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

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

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

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

#elseif 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)

enter image description here

评论

12赞 Mike Keskinov 9/13/2017
我认为这是正确的答案。比呼叫终端更容易。(特别是如果您安装了不同版本的 Xcode)
27赞 Andrew Paul Simmons 10/4/2017
这是正确的答案,因为 swift 版本是按目标配置的。
2赞 logoff 11/9/2017
我在使用 Xcode 8.1 的项目中没有看到这个缺陷
6赞 Parkhya Dev 11/25/2017
您可以在最新版本的 Xcode 上看到此属性
1赞 Krunal 1/17/2019
@JonMcClung - Xcode 10.1 中也提供了相同的选项。我刚刚检查了一下。
24赞 Paul King 6/12/2018 #7

要查看计算机上安装的 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(例如测试版)正在使用的 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

-3赞 user3810044 2/9/2019 #8

奖金贡献: 我正在使用自定义 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

当然,您也可以使用正则表达式,但可以随心所欲:]

3赞 korakot 3/14/2019 #9

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

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

结果是5.0-dev

10赞 Jimmy KD 4/18/2019 #10
/usr/bin/swiftc --version

swift 版本 <--> Xcode 版本

-1赞 SuperNova 9/27/2019 #11

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

System-IOSs-MacBook-Air swift
Welcome to Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7).
Type :help for assistance.
-4赞 viral goti 11/12/2019 #12
  1. 选择您的项目
  2. 构建设置
  3. 搜索“Swift Language”
  4. 现在,您可以看到您在项目中使用的 Swift 版本

https://i.stack.imgur.com/Ojn3m.png

评论

2赞 Martin R 11/12/2019
这与 stackoverflow.com/a/46080904/1187415 中给出的第一个解决方案有何不同?
0赞 viral goti 11/12/2019
好吧,我将抛出主项目目录,当您输入“swift language”时,它仅在构建设置的顶部显示 swift 版本,仅此而已。
21赞 Alpana 6/12/2020 #13

如果有人正在寻找基于 Xcode 版本的 Swift 版本的快速一对一映射:

Xcode 13.4.1 :      Swift version 5.6.1

Xcode 13.2   :      Swift version 5.5.2

Xcode 12.5   :      Swift version 5.4.2

Xcode 12.3   :      Swift version 5.3.2

Xcode 12.2   :      Swift version 5.3.1

Xcode 11.6   :      Swift version 5.2.4

Xcode 11.5   :      Swift version 5.2.4

Xcode 11.4   :      Swift version 5.2

Xcode 11.3   :      Swift version 5.1.3

Xcode 11.2.1 :      Swift version 5.1.2

Xcode 11.1   :      Swift version 5.1

通过运行以下命令获得,如在不同的 Xcode 版本上所述:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
1赞 Joshua Dance 9/20/2020 #14

Xcode 12 中,只需单击几下即可找到您的项目正在使用的 Swift 版本,以帮助像我这样的新手。

  1. 单击您的项目(左侧窗格中的顶级蓝色图标)
  2. 单击“生成设置”(“项目>标题”中的第 5 项)
  3. 向下滚动到 Swift Compiler - Language,然后查看下拉列表。

enter image description here

3赞 developerjavad 12/21/2020 #15

在终端中输入 hi frind 代码 斯威夫特 -v

打印终端 欢迎使用 Apple Swift 版本 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53)。

2赞 Navdeep Paliwal 1/8/2021 #16

如果你想检查特定版本的 Swift 的运行代码,你可以使用

#if compiler(>=5.1) //4.2, 3.0, 2.0 replace whatever swft version you wants to check
#endif
7赞 Ruchin Somal 4/4/2022 #17

您可以在终端上运行命令

xcrun swift -version

您可以参考下表来检查哪个 Xcode 使用的是哪个版本的 swift 语言。

Xcode 13.4.1 :      Swift version 5.6.1

Xcode 13.3   :      Swift version 5.6

Xcode 13.2   :      Swift version 5.5.2

Xcode 12.5   :      Swift version 5.4.2

Xcode 12.3   :      Swift version 5.3.2

Xcode 12.2   :      Swift version 5.3.1

Xcode 11.6   :      Swift version 5.2.4

Xcode 11.5   :      Swift version 5.2.4

Xcode 11.4   :      Swift version 5.2

Xcode 11.3   :      Swift version 5.1.3

Xcode 11.2.1 :      Swift version 5.1.2

Xcode 11.1   :      Swift version 5.1

评论

0赞 mckeed 10/3/2023
谢谢。terminal 命令很有帮助,因为我项目中的版本设置为“未指定”
0赞 mansoor.khan 7/18/2023 #18

我能够通过以下命令从 termianl 中找到 swift 的版本:

swift -version. 您还可以键入以查看更多可以在终端上使用 swift 语言的命令。swift --help

查找并确保 XCode 确实使用相同版本的 swift 的另一种方法是转到项目的构建设置,并在 Swift 编译器 - 语言部分下检查 Swift 语言版本。请参阅下面的屏幕截图:

enter image description here