web-dev-qa-db-ja.com

どのバージョンのSwiftを使用しているのか、どうすればわかりますか?

Xcode内に新しいSwiftプロジェクトを作成しました。 Swiftのどのバージョンが使用されているのでしょうか。

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

471
David Snabel

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

プロジェクト►(プロジェクトのターゲットを選択)►ビルド設定►(検索バーに 'Swift_version'と入力してください)Swift Compiler Language►Swift Language Version►それを開くにはLanguageリストをクリックしてください。 -item、それは現在のSwiftバージョンになります)。

わかりやすいように、このスナップショットを見てください。

enter image description here


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

#if 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 10.x を含む)

enter image description here

280
Krunal

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

$ 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のLocations環境設定パネルにあるCommand Line Toolsポップアップメニューを使用してください。

465
matt

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

Swift -version
91
Alzayed

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

古いXcodeの場合は、この解決策を使用し、端末を開いて以下のコマンドを入力してください。

ケース1:Xcode Appを1つだけインストールしました

Swift -version

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

  • active developer directoryを切り替えます(次のコマンドのXcode_7.3.appを、Swiftのバージョンを確認する Application ディレクトリのXcodeアプリファイル名に置き換えます)。

     Sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
    
  • それから

     Swift -version
    

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

62
Aditya Deshmane

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

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

enter image description here

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

20
joern

この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 :)

18
alexisSchreier

お使いのマシンにインストールされているSwiftのデフォルトバージョンを確認するには、コマンドラインから次のように入力します。

Swift --version

Apple Swiftバージョン4.1.2(swiftlang-902.0.54 clang-902.0.39.2)

ターゲット:x86_64-Apple-darwin 17.6.0

これはおそらく、あなたがインストールしたXcodeのApp Storeバージョンに含まれているバージョンです(あなたがそれを変更していない限り)。

特定のバージョンの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-darwin 17.6.0

8
Paul King
/usr/bin/swiftc --version

そして Swiftバージョン<--> Xcodeバージョン

0
Jimmy Yin

Google ColabのSwiftを使用しています。これはColabでそれをチェックする方法です。

!/Swift/toolchain/usr/bin/Swift --version

結果は5.0-devです

おまけの貢献:私はカスタムの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

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

0
user3810044