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

735

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

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


11
除了https://dev59.com/tV4b5IYBdhLWcg3wchJL%22的标题,我没有发现足以将该问题标记为“重复”的任何相似之处。这个问题的本质不是如何**编程**找到Swift的版本,而是如何以**通用**的方式(通过终端或Xcode等)找到Swift的版本。这是一个很大的区别。 - David Snabel
19个回答

625

我所做的是在终端中输入:

$ xcrun swift -version

Xcode 6.3.2的输出结果为:

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

当然,这假设你的xcrun正确地指向了你的Xcode副本。如果像我一样,你正在使用几个不同版本的Xcode,那可能会让人担心!为了确保这一点,可以执行以下操作:

xcode-select --print-path
$ xcrun --find swift

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

/Applications/Xcode.app/...

如果这是你的Xcode,那么-version输出的结果是准确的。如果你需要重新指定xcrun,请使用Xcode的Locations首选项面板中的Command Line Tools弹出菜单。


9
您还可以使用 xcode-select -p 命令打印 xcrun 将使用的 Xcode 路径,以及使用 sudo xcode-select -s /path/to/Xcode.app 命令更改它。 - Jack Lawrence
4
我刚开始学习iOS开发,惊讶地发现Xcode不允许你选择Swift的版本,也无法从图形用户界面上知道当前使用的Swift版本。请你帮我翻译一下这句话。 - Alex
@RadekWilczak 我不知道你所说的“应该是什么意思”。我只是复制了发布的命令,粘贴到终端中并按回车键,它就可以正常使用。也许有其他方法,但我的说法并没有错误。 - matt
1
这给了我错误的答案。因为Swift是按目标配置的。请参见@Krunal下面的答案,那是最好的答案。 - Andrew Paul Simmons
我同意所有“正确的方法是为每个项目设置SWIFT_VERSION”的说法。然而,在早期的Xcode版本(如8.2)中,它在UI中没有清楚地说明项目支持哪个版本的XCode,只有一个带有Yes、No、unspecified的“使用传统的Swift语言版本”的UI。命令行方法非常有用,可以快速查询可用的最大Swift版本的答案。 - truedat101

578
项目构建设置中有一个名为“Swift Compiler - Languages”的块,它以键值对的形式存储有关Swift语言版本的信息。它将显示您的Xcode中所有可用(支持的)Swift语言版本,并通过一个勾号标记显示当前活动版本。

项目 ►(选择您的项目目标)► 构建设置 ►(在搜索栏中键入'swift_version')Swift Compiler Language ► Swift Language Version ► 点击语言列表以打开它(其中一个列表项上将有一个勾号,表示当前的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
我认为这是正确的答案。比起调用终端来说更简单。(特别是当你安装了不同版本的 Xcode 时) - Mike Keskinov
27
这是正确的答案,因为Swift版本是按目标进行配置的。 - Andrew Paul Simmons
2
我在使用Xcode 8.1时没有看到这个属性。 - logoff
6
您可以在最新版本的Xcode中看到此属性。 - Parkhya Dev
1
@JonMcClung - 在Xcode 10.1中也有相同的选项。我刚刚检查过了。 - Krunal
显示剩余12条评论

134

打开终端并输入:

swift -version

22
这并不一定是Xcode所看到的Swift版本。此外,您可以拥有Swift而无需拥有Xcode。 - asiby

73

从 Xcode 8.3 开始,Build Settings 中有一个名为 Swift Language Version 的键,其值表示目标使用的 Swift 版本。

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

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

swift -version

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

  • 切换active developer directory(将以下命令中的 Xcode_7.3.app 替换为您从应用程序目录中想要检查 Swift 版本的 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 2.3,只需在“Build Setting”中将标志Use Legacy Swift Language Version打开为YES,XCode将为该项目目标使用Swift 2.3。


    26

    您可以在以下位置查看和选择Xcode正在使用的Swift版本:

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

    enter image description here

    这在Xcode 8.3和Xcode 9中可用(没有检查过旧版本)


    2
    我的Xcode 8.2.1项目中没有“Swift语言版本”作为设置选项,但是它具有“使用旧版Swift语言版本”。 - Chris Prince
    1
    @ChrisPrince 是的,在Xcode 8.3之前,Build Settings中不存在Swift Language Version。在之前的Xcode 8.x版本中,Use Legacy Swift Language VersionNo= Swift 3,Yes= Swift 2.3。 - William GP
    1
    我只看到主要版本,而没有次要/补丁组件。例如,现在我只看到“Swift 5”。 - shim

    24

    如果您想查看安装在计算机上的 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
    

    苹果Swift 4.2版本(swiftlang-1000.0.16.7 clang-1000.10.25.3)

    目标: x86_64-apple-darwin17.6.0


    21

    如果有人想要快速了解基于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
    

    19

    1
    我无法通过搜索“使用旧版Swift语言版本”或“遗留版本”找到此内容。 - JerryZhou
    我正在使用最新的Xcode版本8.3.2(8E2002)和Swift 3。现在我想将它更改为Swift 2.3,但只有一个选项是Swift 3.0,第二个是未指定的。所以请问您能否指导我如何在当前项目中获取Swift 2.3?@alexisSchreier - Arsal

    10

    7

    你可以在终端上运行命令。

    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
    

    谢谢。终端命令非常有帮助,因为我项目中的版本被设置为“未指定”。 - undefined

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接