Wie kann ich programmatisch feststellen Swift-version?
Ich weiß, ich kann die version des Swift, die bei mir läuft jetzt der Rückkehr zu einem Terminal und eingeben:
xcrun swift --version
Swift version 1.1 (swift-600.0.57.4)
Target: x86_64-apple-darwin13.4.0
Auch, die ich gelesen habe über die Präprozessor-Makros in Swift, aber kein Glück bei der Suche eine Swift-version konstant.
Als Swift 1.2 Ansätze es wird nett sein, um Flagge alt-code, der läuft nur auf Swift 1.1 (Xcode bis zu 6.2) oder neuen code, der benötigt Xcode 6.3 (Swift 1.2)
Hinweis: ich kann auch mit system() zu tun, so etwas wie:
system("xcrun swift --version | grep version > somefile.txt")
Dann öffnen somefile.txt aber lieber etwas einfachere Lösung
Ich bin mir ziemlich sicher, dass dies wurde gebeten vor (ohne eine befriedigende Lösung damals), aber ich kann ihn nicht finden ...
Ich habe festgestellt Diskussionen darum, Rahmenbedingungen Versionen, aber nicht über der Sprache selbst. Alle Informationen werden geschätzt
Nur eine Warnung über den Anruf zu xcrun. Wenn es mehrere Xcode-Versionen installiert, ich bin mir nicht sicher, dass die Antwort, die Sie erhalten, wird Sie zwangsläufig für die schnelle version, die Ihre app ausgeführt wird.
Dies ist, was ich meinte: stackoverflow.com/questions/27242690/.... Vielleicht nicht gleich, aber in Bezug auf Ihre Frage.
ja, es ist mehr oder weniger die gleichen. Ich kümmern sich nicht darum, den Mechanismus für die erste Swift-version, solange es funktioniert 🙂
Ich habe festgestellt Diskussionen darum, Rahmenbedingungen Versionen, aber nicht über der Sprache selbst. Alle Informationen werden geschätzt
Nur eine Warnung über den Anruf zu xcrun. Wenn es mehrere Xcode-Versionen installiert, ich bin mir nicht sicher, dass die Antwort, die Sie erhalten, wird Sie zwangsläufig für die schnelle version, die Ihre app ausgeführt wird.
Dies ist, was ich meinte: stackoverflow.com/questions/27242690/.... Vielleicht nicht gleich, aber in Bezug auf Ihre Frage.
ja, es ist mehr oder weniger die gleichen. Ich kümmern sich nicht darum, den Mechanismus für die erste Swift-version, solange es funktioniert 🙂
InformationsquelleAutor Diego Freniche | 2015-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Direktiven für bedingte Kompilierung zu testen, die für den spezifischen Swift-version verwendet, um erstellen Sie Ihr Projekt:
InformationsquelleAutor crishoj
Endlich einen workaround, um dies zu tun. Ich bin mit dem Konstanten-Präfix mit
__
können Sie beobachten in Ihrem Spielplatz. Dies wäre einfacher gewesen, mit einem gewissen Maß an Reflexion, aber...__IPHONE_OS_VERSION_MAX_ALLOWED
ist 80200, Bedeutung__IPHONE_8_2
für Xcode 6.2 Swift (1.1), aber sein Wert ist 80300 (__IPHONE_8_3
) in Xcode 6.3 (Swift 1.2)So, jetzt in Ihrer Bibliothek können Sie scheitern, fallen und sagen, Ihre Benutzer-Swift ' s version nicht stimmt, mit diesem:
Swift wird Ihnen eine schöne:
UPDATE der WWDC 2015 - Swift 2.0
Wie gesagt in den Apple Swift blog, Swift 2.0 haben wir
#available
Blöcke zu überprüfen, die für bestimmte OS-Versionen, die in unserem code. Ein Beispiel:Behoben! Vielen Dank für das heads-up! Ja, Xcode 6.2 == Swift 1.1 / Xcode 6.3 == Swift 1.2. Ich Hoffnung , konstant zu halten wird in Zukunft aktualisiert. Ich bin nur langsam die Ideen aus 😀
InformationsquelleAutor Diego Freniche
Swift 3.1 erweitert die
@available
- Attribut unterstützen die Angabe von Swift-version zahlen zusätzlich zu den bestehenden Plattform-Versionen.Viel bessere Lösung anstelle der Vergleich einer version mit der if-else-Bedingung Schleifen!!
InformationsquelleAutor byJeevan
Aus deinem Kommentar:
Sollten Sie nicht überprüfen Sie die version der Programmiersprache, um einige Funktionen oder nicht. Dieser Ansatz ist viel besser:
Nur prüfen, ob eine Methode vorhanden ist oder nicht.
nil
. Schließlich: Sie sind unter Angabe Ihrer Meinung nach, nicht die Beantwortung der Frage.Das hilft nicht, wenn das problem ist ein compiler (also syntaktische) Fehler zwischen Swift-Versionen.
InformationsquelleAutor dehlen
Für iOS :
Für OSX :
K.
InformationsquelleAutor Julien Lacroix