【问题标题】:How do I see which version of Swift I'm using?如何查看我使用的 Swift 版本?
【发布时间】:2015-08-27 16:52:47
【问题描述】:

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

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

【问题讨论】:

  • 除了stackoverflow.com/questions/29140476/… 的标题之外,我发现与这个问题没有任何相似性,足以将这个问题标记为重复。这个问题的本质不是如何programmatically 找到 Swift 的版本,而是如何以 general 的方式(通过终端或 Xcode 等)找到 Swift 的版本。 )。这是一个很大的不同。

标签: swift xcode terminal


【解决方案1】:

我所做的是在终端中说:

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

【讨论】:

  • 您也可以使用xcode-select -p 打印xcrun 将使用的Xcode 的路径,并使用sudo xcode-select -s /path/to/Xcode.app 更改它。
  • 我刚开始学习ios开发,很惊讶xcode不让你选择swift的版本,甚至不让你从GUI知道版本。
  • @RadekWilczak 我不知道你所说的“应该”是什么意思。我只是复制了发布的命令并粘贴到终端并点击返回,它就可以工作了。所以也许还有另一种选择,但我说的没有错。
  • 这给了我错误的答案。因为 swift 是按目标配置的。请参阅下面来自@Krunal 的答案以获得最佳答案。
  • 我同意每个项目的所有“正确方法是设置 SWIFT_VERSION”。但是,在早期的 Xcode 版本(如 8.2)中,它并没有在 UI 中明确说明项目支持哪个 XCode 版本,并且在 UI 中只有“使用旧版 Swift 语言版本”,并且未指定是、否。命令行方法非常有用,可以快速查询可用的最大 swift 版本的答案。
【解决方案2】:

打开终端并写入:

swift -version

【讨论】:

  • 这不一定是 Xcode 看到的 swift 版本。此外,你可以不用 Xcode 也能 swift。
【解决方案3】:

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

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

案例1:您只安装了一个Xcode App

swift -version

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

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

     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,只需从 Build Setting 开启标志 Use Legacy Swift Language VersionYES,XCode 将为该项目目标使用 Swift 2.3。

【讨论】:

    【解决方案4】:

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

    Xcode 8 默认使用 Swift 3.0。但是你可以打开 Swift 2.3。转到项目的 Build Settings 并将“Use Legacy Swift Language Version”设置为 YES。

    好旧的reddit :)

    【讨论】:

    • 我无法通过搜索“使用旧版 Swift 语言版本”或“旧版”找到这个
    • 我在 Swift 语言版本中使用最新的 Xcode 版本 8.3.2 (8E2002) 和 swift 3。现在我想将其更改为 swift 2.3,但只有一个选项 swift 3.0 和 2nd 未指定。那么请您指导一下这怎么可能?在我当前的项目中获得 swift 2.3? @alexisSchreier
    【解决方案5】:

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

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

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

    【讨论】:

    • Swift Language Version 在我的 Xcode 8.2.1 项目中没有作为设置出现。它确实有Use Legacy Swift Language Version
    • @ChrisPrince 是的,Swift Language Version 在 Xcode 8.3 之前在 Build Settings 中不存在......在之前的 Xcode 8.x 版本中 Use Legacy Swift Language VersionNo = Swift 3 和Yes = 斯威夫特 2.3
    【解决方案6】:

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

    项目►(选择您的项目目标)►构建设置►(类型 'swift_version' 在搜索栏中)Swift 编译器语言 ► Swift 语言 版本 ► 点击语言列表打开它(列表项中的任何一个都会有一个勾号,这将是当前的 swift 版本)。

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


    借助以下代码,您可以通过编程方式找到项目支持的 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 的结果(使用 Xcode 11.x

    【讨论】:

    • 我认为这是正确的答案。比呼叫终端更容易。 (尤其是如果您安装了不同版本的 Xcode)
    • 这是正确的答案,因为 swift 版本是基于每个目标配置的。
    • 我在使用 Xcode 8.1 的项目中没有看到这个属性
    • 你可以在最新版本的xcode上看到这个属性
    • @JonMcClung - Xcode 10.1 中也可以使用相同的选项。我刚刚检查过了。
    【解决方案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(例如 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

    【讨论】:

      【解决方案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
      

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

      【讨论】:

        【解决方案9】:

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

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

        结果是5.0-dev

        【讨论】:

          【解决方案10】:
          /usr/bin/swiftc --version
          

          swift version <--> Xcode version

          【讨论】:

            【解决方案11】:

            只需在终端中输入 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.
            

            【讨论】:

              【解决方案12】:
              1. 选择您的项目
              2. 构建设置
              3. 搜索“快速语言”
              4. 现在您可以看到您在项目中使用的 swift 版本

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

              【讨论】:

              • 这与stackoverflow.com/a/46080904/1187415 中给出的第一个解决方案有何不同?
              • 好吧,我要抛出主项目目录,当你输入“swift语言”时,它只会在构建设置的顶部显示 swift 版本..
              【解决方案13】:

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

              【讨论】:

                【解决方案14】:

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

                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
                

                【讨论】:

                  【解决方案15】:

                  更新了关于如何在 Xcode 12 中单击几下即可找到您的项目正在使用的 Swift 版本的答案,以帮助像我这样的新手。

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

                  【讨论】:

                    【解决方案16】:

                    终端中的朋友代码类型 快速-v

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

                    【讨论】:

                      【解决方案17】:

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

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2021-03-30
                        • 2012-08-19
                        • 2020-09-03
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-02-18
                        • 2013-06-25
                        • 2021-07-03
                        相关资源
                        最近更新 更多