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

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

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

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

我所做的就是在终端中说:

$ xcrun swift -version

Xcode6.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 的位置首选项面板中的命令行工具弹出菜单。

打开终端并写入:

swift -version

从 Xcode 8.3 开始 Build Settings 的键 Swift Language Version 的值为 swift 您的目标正在使用的版本。

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

情况一:您只安装了一个XcodeApp

swift -version

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

  • 切换 active developer directory(将 Xcode_7.3.app 从 使用您想要的 Application 目录中的 Xcode 应用程序文件名执行以下命令 检查 swift 版本)

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

     swift -version
    

注意: 从 Xcode 8 到 Xcode 8。2.x 你可以使用 swift 2.3 即使 Xcode 8 使用 swift 3.x 作为默认 swift 版本。要使用 swift 2.3,只需打开标志 Use Legacy Swift Language VersionYESBuild Setting 并且 XCode 将为该项目目标使用 Swift 2.3。

这个 reddit post 帮助了我: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8 uses Swift 3.0 as default. But you can turn on Swift 2.3. Go to project's Build Settings and set 'Use Legacy Swift Language Version' to YES.

好老的 reddit :)

您可以看到 select Swift 版本 Xcode 正在使用:

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

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

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

Project ► (Select Your Project Target) ► Build Settings ► (Type 'swift_version' in the Search bar) Swift Compiler Language ► Swift Language Version ► Click on Language list to open it (and there will be a tick mark on any one of list-item, that will be current swift version).

看这张截图,方便理解:


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

#if 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 的结果(

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

swift --version

Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)

Target: x86_64-apple-darwin17.6.0

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

如果您想确定特定版本的 Xcode(例如测试版)使用的 Swift 的实际版本,那么从命令行调用 swift Xcode 包中的二进制文件并向其传递参数 --version

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

Apple Swift version 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)

Target: x86_64-apple-darwin17.6.0

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

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

我正在使用来自 Google Colab 的 Swift。下面是如何在 Colab 中检查它。

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

结果是5.0-dev

/usr/bin/swiftc --version

swift version <--> Xcode version

只需在终端中输入 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.
  1. Select 你的项目
  2. 构建设置
  3. 搜索 "swift language"
  4. 现在您可以看到您在项目中使用的 swift 版本

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

你会在项目设置下得到这个

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

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

关于如何查找您的项目正在使用哪个版本的 Swift 的更新答案,只需在 Xcode12 中单击几下即可帮助像我这样的菜鸟.

  1. 单击您的项目(左侧窗格中的顶级蓝色图标)
  2. 单击构建设置(项目中的第 5 项 > Header)
  3. 向下滚动到 Swift 编译器 - 语言,然后查看下拉列表。

hi frind 终端代码类型 swift-v

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

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

#if compiler(>=5.1) //4.2, 3.0, 2.0 replace whatever swft version you wants to check
#endif

你可以运行终端上的命令

xcrun swift -version

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

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