Ich habe gerade ein neues Swift-Projekt in Xcode erstellt. Ich frage mich, welche Version von Swift verwendet wird.
Wie kann ich in Xcode oder im Terminal sehen, welche Version von Swift ich in meinem Projekt verwende?
Ich habe gerade ein neues Swift-Projekt in Xcode erstellt. Ich frage mich, welche Version von Swift verwendet wird.
Wie kann ich in Xcode oder im Terminal sehen, welche Version von Swift ich in meinem Projekt verwende?
Antworten:
Die Projekterstellungseinstellungen enthalten den Block 'Swift Compiler - Languages', in dem Informationen zur Swift Language Version im Schlüsselwertformat gespeichert werden. Es zeigt Ihnen alle verfügbaren (unterstützten) Swift Language-Versionen für Ihren Xcode und die aktive Version auch durch ein Häkchen an.
Projekt ► (Wählen Sie Ihr Projektziel aus) ► Build-Einstellungen ► (Geben Sie 'swift_version' in die Suchleiste ein) Swift Compiler Language ► Swift Language Version ► Klicken Sie auf die Sprachliste, um sie zu öffnen (und auf einer Liste wird ein Häkchen angezeigt) -item, das wird die aktuelle schnelle Version sein).
Schauen Sie sich diesen Schnappschuss an, um das Verständnis zu erleichtern:
Mithilfe des folgenden Codes können Sie programmgesteuert die von Ihrem Projekt unterstützte Swift-Version finden.
#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
Hier ist das Ergebnis mit Playground (mit Xcode 11.x )
Was ich tue, ist im Terminal zu sagen:
$ xcrun swift -version
Die Ausgabe für Xcode 6.3.2 lautet:
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
Dies setzt natürlich voraus, dass Sie xcrun
korrekt auf Ihre Kopie von Xcode zeigen. Wenn Sie wie ich mit mehreren Versionen von Xcode jonglieren, kann dies eine Sorge sein! Um sicherzugehen, dass es so ist, sagen wir
$ xcrun --find swift
und schauen Sie sich den Pfad zu Xcode an, den er Ihnen zeigt. Zum Beispiel:
/Applications/Xcode.app/...
Wenn das Ihr Xcode ist, ist die Ausgabe von -version
korrekt. Wenn Sie einen neuen Termin festlegen müssen xcrun
, verwenden Sie das Einblendmenü " Befehlszeilentools" im Einstellungsbereich "Standorte" von Xcode.
xcode-select -p
den Pfad zu dem von xcrun verwendeten Xcode drucken und ihn sudo xcode-select -s /path/to/Xcode.app
ändern.
Ab Xcode 8.3 Build Settings
hat SchlüsselSwift Language Version
mit dem Wert der schnellen Version, die Ihr Ziel verwendet.
Verwenden Sie für ältere Xcodes diese Lösung, öffnen Sie das Terminal und geben Sie die folgenden Befehle ein.
Fall 1: Sie haben nur eine Xcode-App installiert
swift -version
Fall 2: Sie haben mehrere Xcode-Apps installiert
Wechseln active developer directory
(Ersetzen Sie den Xcode_7.3.app
folgenden Befehl durch den Namen Ihrer Xcode-App-Datei aus dem Anwendungsverzeichnis, für das Sie die schnelle Version überprüfen möchten.)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
Dann
swift -version
HINWEIS: Von Xcode 8 bis Xcode 8.2.x können Sie Swift 2.3 verwenden, obwohl Xcode 8 Swift 3.x als Standardversion von Swift verwendet. Um Swift 2.3 zu verwenden, aktivieren Sie einfach das Flag Use Legacy Swift Language Version
to YES
from Build Setting
und XCode verwendet Swift 2.3 für dieses Projektziel.
Sie können sehen und auswählen, welche Swift-Version Xcode verwendet in:
Ziel -> Build-Einstellungen -> Swift-Sprachversion :
Dies ist in Xcode 8.3 und Xcode 9 verfügbar (ältere Versionen wurden nicht überprüft)
Swift Language Version
wird in meinem Xcode 8.2.1-Projekt nicht als Einstellung angezeigt. Es hat Use Legacy Swift Language Version
.
Swift Language Version
existierte hier Build Settings
erst in Xcode 8.3 .... in früheren Xcode 8.x-Versionen Use Legacy Swift Language Version
, No
= Swift 3 und Yes
= Swift 2.3
Dieser reddit-Beitrag hat mir geholfen: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Xcode 8 verwendet standardmäßig Swift 3.0. Sie können Swift 2.3 jedoch aktivieren. Gehen Sie zu den Build-Einstellungen des Projekts und setzen Sie 'Use Legacy Swift Language Version' auf YES.
Guter alter Reddit :)
Geben Sie Folgendes ein, um die auf Ihrem Computer installierte Standardversion von swift über die Befehlszeile anzuzeigen:
swift --version
Apple Swift Version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
Ziel: x86_64-apple-darwin17.6.0
Dies ist höchstwahrscheinlich die Version, die in der von Ihnen installierten App Store-Version von Xcode enthalten ist (es sei denn, Sie haben sie geändert).
Wenn Sie die tatsächliche Version von Swift ermitteln möchten, die von einer bestimmten Version von Xcode (z. B. einer Beta) verwendet wird, rufen Sie über die Befehlszeile die Swift-Binärdatei im Xcode-Bundle auf und übergeben Sie ihr den Parameter --version
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift Version 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)
Ziel: x86_64-apple-darwin17.6.0
/usr/bin/swiftc --version
Bonusbeitrag: Ich verwende ein benutzerdefiniertes node.js-Skript, um eine saubere Zeichenfolge für die Verwendung mit der Jazzy-Dokumentation zu extrahieren. Sie könnten davon Gebrauch machen, wenn Sie einen Ort finden, an dem Sie es in Ihren Entwicklungsprozess einarbeiten können:
Aus einem Bash-Skript aufgerufen:
#!/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
Sie können natürlich auch Regex verwenden, aber machen Sie, was Sie wollen:]
Wenn Sie einfach den Befehl swift in das Terminal eingeben, wird die Version angezeigt, während Sie sich bei der Swift-Konsole anmelden (so etwas wie unten).
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.