ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

m
matt

我所做的是在终端中说:

$ 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 版本的答案。
s
shim

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

Project ► (Select Your Project Target) ► Build Settings ► (Type 'swift_version' in the Search bar) Swift Compiler Language ► Swift Language Version ► 点击Language列表打开它(列表中的任何一个都会有一个勾号-item,这将是当前的 swift 版本)。

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

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

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

#if 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

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


我认为这是正确的答案。比呼叫终端更容易。 (特别是如果您安装了不同版本的 Xcode)
这是正确的答案,因为 swift 版本是基于每个目标配置的。
我在 Xcode 8.1 的项目中没有看到这个属性
你可以在最新版本的 xcode 上看到这个属性
@JonMcClung - Xcode 10.1 中也可以使用相同的选项。我刚刚检查过了。
A
Abdulrazzaq Alzayed

打开终端并写入:

swift -version

这不一定是 Xcode 看到的 swift 版本。此外,您可以在没有 Xcode 的情况下使用 swift。
A
Aditya Deshmane

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

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

案例一:你只安装了一个 Xcode App

swift -version

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

切换活动开发者目录(将以下命令中的 Xcode_7.3.app 替换为您要检查 swift 版本的应用程序目录中的 Xcode 应用程序文件名) sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/开发商

然后 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。


j
joern

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

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

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

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


Swift Language Version 在我的 Xcode 8.2.1 项目中没有作为设置出现。它确实有 Use Legacy Swift Language Version
@ChrisPrince 是的,在 Xcode 8.3 之前 Build Settings 中不存在 Swift Language Version ......在之前的 Xcode 8.x 版本 Use Legacy Swift Language VersionNo = Swift 3 和 Yes = Swift 2.3
P
Paul King

要查看安装在您机器上的默认 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


a
alexisSchreier

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

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

好旧的reddit :)


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

如果有人正在寻找基于 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

J
Jimmy KD
/usr/bin/swiftc --version

swift version <--> Xcode version


k
korakot

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

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

结果是 5.0-dev


d
developerjavad

终端 swift -v 中的 hi frind 代码类型

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


N
Navdeep Paliwal

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

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

J
Joshua Dance

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

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

https://i.stack.imgur.com/3GjSL.jpg


R
Ruchin Somal

您可以在终端上运行命令

xcrun swift -version

或者

您可以参考下表来检查哪个 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

S
SuperNova

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

佚名

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

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


v
viral goti

选择您的项目 Build Setting 搜索“swift language”现在您可以看到您在项目中使用的 swift 版本

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


这与 stackoverflow.com/a/46080904/1187415 中给出的第一个解决方案有何不同?
好吧,我将抛出主项目目录,当您键入“swift语言”时,它只会在构建设置的顶部显示 swift 版本,仅此而已..
F
Faruque Hossain

您将在项目设置下获得此信息

https://i.stack.imgur.com/H2WZQ.jpg