我怎么看我正在使用哪个版本的Swift?

时间:2015-06-11 19:52:22

标签: swift xcode terminal

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

我如何在Xcode或终端中看到我在项目中使用的Swift版本是什么?

17 个答案:

答案 0 :(得分:467)

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

$ 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的“位置”首选项窗格中的“命令行工具”弹出菜单。

答案 1 :(得分:285)

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

  

项目►(选择项目目标)►构建设置►(类型   ' swift_version'在搜索栏中)Swift编译器语言►Swift语言   版本►单击语言列表将其打开(并且列表项中的任何一个都会有一个刻度线,这将是当前的快速版本。)

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

enter image description here

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

FileSystem -i

以下是使用Playground(Xcode 10.x

的结果

enter image description here

答案 2 :(得分:91)

打开终端并写下:

swift -version

答案 3 :(得分:62)

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

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

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

swift -version

案例2:您安装了多个Xcode应用

  • 切换active developer directory(替换Xcode_7.3.app 以下命令,其中包含您想要的应用程序目录中的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 Version打开标记YESBuild Setting,XCode就会将Swift 2.3用于该项目目标。

答案 4 :(得分:20)

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

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

enter image description here

这适用于Xcode 8.3和Xcode 9(尚未检查旧版本)

答案 5 :(得分:18)

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

  

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

好老reddit:)

答案 6 :(得分:9)

要查看计算机上安装的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

答案 7 :(得分:6)

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

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/Xcode11.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version

答案 8 :(得分:1)

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

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

答案 9 :(得分:1)

你好,终端中的代码类型 快速 -v

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

答案 10 :(得分:0)

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

{ company: {name: 'Big Corp'}

答案 11 :(得分:0)

  1. 选择您的项目
  2. 构建设置
  3. 搜索“快速语言”
  4. 现在您可以看到您的项目中正在使用的快速版本

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

答案 12 :(得分:0)

/usr/bin/swiftc --version

swift version <--> Xcode version

答案 13 :(得分:0)

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

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

结果为5.0-dev

答案 14 :(得分: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

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

答案 15 :(得分:-1)

使用Swift 5:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    let cell = self.tableView.cellForRow(at: indexPath)
    if cell?.accessoryType == UITableViewCell.AccessoryType.checkmark
    {
        cell?.accessoryType = UITableViewCell.AccessoryType.none
        tableView.deselectRow(at: indexPath, animated: true)
    }else
    {
        cell?.selectionStyle = UITableViewCell.SelectionStyle.none
        cell?.accessoryType = UITableViewCell.AccessoryType.checkmark
    }       
}

答案 16 :(得分:-1)

有关如何找到您的项目正在使用的Swift版本的最新答案,只需单击 Xcode 12 即可帮助像我这样的新手。

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

enter image description here