Abgesehen vom Titel stackoverflow.com/questions/29140476/… finde ich keine Ähnlichkeit mit dieser Frage, die ausreicht, um diese Frage als doppelt zu kennzeichnen . Das Wesentliche dieser Frage ist nicht, wie man die Version von Swift programmgesteuert findet , sondern wie man die Version von Swift allgemein findet (über Terminal oder Xcode oder usw.). Das ist ein großer Unterschied.
David Snabel
Antworten:
407
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 )
Ich denke das ist die richtige Antwort. Einfacher als das Terminal anzurufen. (vor allem, wenn Sie eine andere Version von Xcode installiert haben)
Mike Keskinov
17
Dies ist die richtige Antwort, da die schnelle Version pro Ziel konfiguriert wird.
Andrew Paul Simmons
2
Ich sehe diese Eigenschaft nicht in meinem Projekt mit Xcode 8.1
Abmeldung
6
Sie können diese Eigenschaft auf den neuesten Versionen von xcode
Parkhya Dev
1
@ JonMcClung - Die gleiche Option ist auch in Xcode 10.1 verfügbar. Ich habe es gerade überprüft.
Krunal
500
Was ich tue, ist im Terminal zu sagen:
$ xcrun swift -version
Die Ausgabe für Xcode 6.3.2 lautet:
AppleSwift version 1.2(swiftlang-602.0.53.1 clang-602.0.53)
Dies setzt natürlich voraus, dass Sie xcrunkorrekt 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 -versionkorrekt. Wenn Sie einen neuen Termin festlegen müssen xcrun, verwenden Sie das Einblendmenü " Befehlszeilentools" im Einstellungsbereich "Standorte" von Xcode.
Sie können auch xcode-select -pden Pfad zu dem von xcrun verwendeten Xcode drucken und ihn sudo xcode-select -s /path/to/Xcode.appändern.
Jack Lawrence
4
Ich habe gerade angefangen, die iOS-Entwicklung zu lernen, und ich bin überrascht, dass Sie mit xcode weder die Version von swift auswählen noch die Version über die GUI kennenlernen können.
Alex
@RadekWilczak Ich weiß nicht, was du mit "sollte sein" meinst. Ich habe gerade den geposteten Befehl kopiert und in Terminal eingefügt und die Eingabetaste gedrückt, und es funktioniert. Vielleicht gibt es eine andere Alternative, aber was ich gesagt habe, ist nicht falsch.
Matt
1
Dies gab mir die falsche Antwort. Weil Swift pro Ziel konfiguriert ist. Die beste Antwort finden Sie in der Antwort unten von @Krunal.
Andrew Paul Simmons
Ich stimme allen zu, dass "der richtige Weg ist, die SWIFT_VERSION festzulegen" pro Projekt. In früheren Xcode-Versionen wie 8.2 wird in der Benutzeroberfläche jedoch nicht klar angegeben, welche Version von XCode im Projekt unterstützt wird, und in der Benutzeroberfläche ist nur "Legacy Swift Language Version verwenden" mit "Ja, Nein" angegeben. Der Befehlszeilenansatz ist äußerst nützlich, um die Antwort auf die maximal verfügbare Version schnell abfragen zu können.
Dies ist nicht unbedingt die Version von Swift, die Xcode sieht. Außerdem können Sie schnell ohne Xcode haben.
Asiby
64
Ab Xcode 8.3 Build Settingshat 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.appfolgenden Befehl durch den Namen Ihrer Xcode-App-Datei aus dem Anwendungsverzeichnis, für das Sie die schnelle Version überprüfen möchten.)
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 Versionto YESfrom Build Settingund XCode verwendet Swift 2.3 für dieses Projektziel.
Swift Language Versionwird in meinem Xcode 8.2.1-Projekt nicht als Einstellung angezeigt. Es hat Use Legacy Swift Language Version.
Chris Prince
1
@ChrisPrince Ja, Swift Language Versionexistierte hier Build Settingserst in Xcode 8.3 .... in früheren Xcode 8.x-Versionen Use Legacy Swift Language Version, No= Swift 3 und Yes= Swift 2.3
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.
Ich kann dies nicht finden, indem ich nach "Legacy Swift Language Version verwenden" oder "Legacy"
JerryZhou
Ich verwende die neueste Xcode-Version 8.3.2 (8E2002) und Swift 3 dort in der Swift-Sprachversion. Jetzt möchte ich dies auf Swift 2.3 ändern, aber es gibt nur eine Option Swift 3.0 und die zweite ist nicht spezifiziert. Würden Sie bitte anleiten, wie dies möglich wäre? um schnell 2.3 in meinem aktuellen Projekt zu bekommen? @alexisSchreier
Arsal
14
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
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 AppleSwift version 5.1(swiftlang-1100.0.270.13 clang-1100.0.33.7).Type:help for assistance.
Nun, ich werde das Hauptprojektverzeichnis werfen und wenn Sie "schnelle Sprache" eingeben, wird nur die schnelle Version oben in den Build-Einstellungen angezeigt. Nichts anderes als das.
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.
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.
Hier ist das Ergebnis mit Playground (mit Xcode 11.x )
quelle
Was ich tue, ist im Terminal zu sagen:
Die Ausgabe für Xcode 6.3.2 lautet:
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 wirund schauen Sie sich den Pfad zu Xcode an, den er Ihnen zeigt. Zum Beispiel:
Wenn das Ihr Xcode ist, ist die Ausgabe von
-version
korrekt. Wenn Sie einen neuen Termin festlegen müssenxcrun
, verwenden Sie das Einblendmenü " Befehlszeilentools" im Einstellungsbereich "Standorte" von Xcode.quelle
xcode-select -p
den Pfad zu dem von xcrun verwendeten Xcode drucken und ihnsudo xcode-select -s /path/to/Xcode.app
ändern.Öffnen Sie das Terminal und schreiben Sie:
quelle
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
Fall 2: Sie haben mehrere Xcode-Apps installiert
Wechseln
active developer directory
(Ersetzen Sie denXcode_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.)Dann
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
toYES
fromBuild Setting
und XCode verwendet Swift 2.3 für dieses Projektziel.quelle
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)
quelle
Swift Language Version
wird in meinem Xcode 8.2.1-Projekt nicht als Einstellung angezeigt. Es hatUse Legacy Swift Language Version
.Swift Language Version
existierte hierBuild Settings
erst in Xcode 8.3 .... in früheren Xcode 8.x-VersionenUse Legacy Swift Language Version
,No
= Swift 3 undYes
= Swift 2.3Dieser reddit-Beitrag hat mir geholfen: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Guter alter Reddit :)
quelle
Geben Sie Folgendes ein, um die auf Ihrem Computer installierte Standardversion von swift über die Befehlszeile anzuzeigen:
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
quelle
und schnelle Version <--> Xcode-Version
quelle
Ich verwende Swift von Google Colab. So überprüfen Sie es in Colab.
Das Ergebnis ist
5.0-dev
quelle
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:
SwiftVerSlicer.js:
Sie können natürlich auch Regex verwenden, aber machen Sie, was Sie wollen:]
quelle
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).
quelle
https://i.stack.imgur.com/Ojn3m.png
quelle
Sie erhalten dies unter der Projekteinstellung
quelle