使用しているSwiftのバージョンを確認するにはどうすればよいですか?


567

Xcode内に新しいSwiftプロジェクトを作成しました。使用しているSwiftのバージョンを知りたいのですが。

Xcodeまたはターミナルで、プロジェクト内で使用しているSwiftのバージョンを確認するにはどうすればよいですか?


7
stackoverflow.com/questions/29140476/…というタイトルの他に、この質問に重複しているため、この質問にラベルを付けるのに十分な類似性はありません。この質問の本質は、プログラムでSwiftのバージョンを見つける方法ではなく、一般的な方法(ターミナルまたはXcodeなど)でSwiftのバージョンを見つける方法です。これは大きな違いです。
David Snabel

回答:


407

プロジェクトのビルド設定には、Swift言語バージョンに関する情報をキーと値の形式で格納するブロック 'Swift Compiler-Languages'があります。Xcodeのすべての利用可能な(サポートされている)Swift言語バージョンとアクティブなバージョンもチェックマークで表示されます。

プロジェクト►(プロジェクトターゲットの選択)►ビルド設定►(検索バーに「swift_version」と入力)Swiftコンパイラ言語►Swift言語バージョン►言語リストをクリックして開きます(リストのいずれかにチェックマークが表示されます) -item、それは現在の迅速なバージョンになります)。

簡単に理解できるように、このスナップショットを見てください。

説明された領域が強調表示されたxcode


次のコードの助けを借りて、プログラムで、プロジェクトでサポートされているSwiftバージョンを見つけることができます。

#if 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を使用

ここに画像の説明を入力してください


10
これは正解だと思います。端末を呼び出すよりも簡単です。(特にXcodeの異なるバージョンがインストールされている場合)
Mike Keskinov

17
Swiftバージョンはターゲットごとに構成されるため、これが正解です。
Andrew Paul Simmons

2
Xcode 8.1のプロジェクトでこのプロパティが表示されません
ログオフ

6
xcodeの最新バージョンでこのプロパティを確認できます
Parkhya Dev

1
@JonMcClung-同じオプションがXcode 10.1でも利用可能です。確認したところです。
Krunal

500

私がしていることはターミナルで言う:

$ xcrun swift -version

Xcode 6.3.2の出力は次のとおりです。

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

もちろん、これはxcrunXcodeのコピーを正しく指し示していることを前提としています。私のように、Xcodeの複数のバージョンをジャグリングしている場合、それは心配になる可能性があります。それが正しいことを確認するには、

$ xcrun --find swift

表示されているXcodeへのパスを確認します。例えば:

/Applications/Xcode.app/...

それがXcodeの場合、出力-versionは正確です。再ポイントする必要がある場合はxcrun、Xcodeの「場所」設定パネルの「コマンドラインツール」ポップアップメニューを使用してください。


8
また、使用することができますxcode-select -pxcrunが使用するのXcodeへのパスを印刷して、sudo xcode-select -s /path/to/Xcode.appそれを変更します。
Jack Lawrence

4
私はiOS開発を学び始めたばかりで、xcodeでswiftのバージョンを選択できず、GUIからバージョンを通知することさえできないことに驚いています。
アレックス

@RadekWilczak「あるべき」という意味がわかりません。投稿したコマンドをコピーしてターミナルに貼り付け、Returnキーを押すだけで機能します。だから多分別の選択肢がありますが、私が言ったことは間違っていません。
2016

1
これは私に間違った答えを与えました。Swiftはターゲットごとに構成されているためです。最良の回答については、@ Krunalから以下の回答を参照してください。
アンドリューポールシモンズ

プロジェクトごとに「正しい方法はSWIFT_VERSIONを設定すること」に同意します。ただし、8.2のような以前のXcodeバージョンでは、プロジェクトでサポートされているXCodeのバージョンがUIに明確に記載されておらず、UIに「Use Legacy Swift Language Version」と表示されています。コマンドラインアプローチは、利用可能な最大の迅速なバージョンが何であるかに対する回答をすばやく照会できるため、非常に便利です。
truedat101 2018年

104

ターミナルを開いて次のように書きます:

swift -version

12
これは必ずしもXcodeが認識するSwiftのバージョンではありません。さらに、Xcodeがなくてもすばやく作業できます。
asiby

64

Xcode 8.3以降にBuild SettingsSwift Language Version、ターゲットが使用している迅速なバージョンの値を持つキーがあります。

古いXcodeの場合、このソリューションを使用し、ターミナルを開いて次のコマンドを入力します

ケース1:Xcodeアプリを1つだけインストールした

swift -version

ケース2:複数のXcodeアプリをインストールした

  • スイッチactive developer directoryXcode_7.3.app次のコマンドを、Swiftのバージョンを確認するアプリケーションディレクトリのXcodeアプリファイル名に置き換えます)

     sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
  • その後

     swift -version

注: Xcode 8からXcode 8.2.xまでは、Xcode 8がデフォルトのswiftバージョンとしてswift 3.xを使用している場合でも、swift 2.3を使用できます。Swift 2.3を使用Use Legacy Swift Language VersionするにYESBuild Setting、フラグをfrom に設定するだけで、XCodeはそのプロジェクトターゲットにSwift 2.3を使用します。


21

Xcodeが使用しているSwiftバージョンを確認して選択できます。

ターゲット -> ビルド設定 -> Swift言語バージョン

ここに画像の説明を入力してください

これはXcode 8.3とXcode 9で利用できます(古いバージョンはチェックしていません)。


2
Swift Language VersionXcode 8.2.1プロジェクトの設定として表示されません。それは持っていますUse Legacy Swift Language Version
Chris Prince、

1
@ChrisPrinceはい、Xcode 8.3までSwift Language Versionここに存在しませんでしたBuild Settings...以前のXcode 8.xバージョンではUse Legacy Swift Language VersionNo= Swift 3およびYes= Swift 2.3
William GP

17

このredditの投稿は私を助けました:https : //www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8はデフォルトでSwift 3.0を使用します。ただし、Swift 2.3をオンにすることはできます。プロジェクトのビルド設定に移動し、「Use Legacy Swift Language Version」をYESに設定します。

古き良きreddit :)


1
「Use Legacy Swift Language Version」または「Legacy」で検索しても見つかりません
JerryZhou

私は最新のXcodeバージョン8.3.2(8E2002)とSwift言語バージョンのswift 3を使用しています。これをswift 2.3に変更したいのですが、swift 3.0のオプションは1つしかなく、2番目は未指定です。これがどのように可能になるかをご案内ください。現在のプロジェクトで迅速に2.3を取得するには?@alexisSchreier
Arsal

14

マシンにインストールされている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

Apple Swiftバージョン4.2(swiftlang-1000.0.16.7 clang-1000.10.25.3)

ターゲット:x86_64-apple-darwin17.6.0



1

Google ColabのSwiftを使用しています。Colabで確認する方法は次のとおりです。

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

結果は 5.0-dev


-1

ボーナスへの貢献:私はカスタム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

もちろん正規表現を使うこともできますが、好きなことをしてください:]


-1

ターミナルで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
  1. プロジェクトを選択してください
  2. ビルド設定
  3. 「swift言語」を検索
  4. これで、プロジェクトで使用している迅速なバージョンを確認できます

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


これは、stackoverflow.com / a / 46080904/1187415に示されている最初のソリューションとどのように異なりますか?
Martin R

さて、私はスローメインプロジェクトディレクトリをつもりですし、あなたは「迅速な言語」と入力するとき、それは...それ以外のビルド設定の何に一番上に迅速バージョンを表示のみである
ウイルスGOTI

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.