Poza tytułem stackoverflow.com/questions/29140476/... Nie widzę podobieństwa do tego pytania, wystarczyłoby, aby oznaczyć je jako duplikat . Istota tego pytania nie polega na tym, jak znaleźć wersję Swift programowo , ale jak znaleźć wersję Swift w sposób ogólny (przez terminal, Xcode itp.). To duża różnica.
David Snabel,
Odpowiedzi:
406
Ustawienia kompilacji projektu zawierają blok „Swift Compiler - Languages”, który przechowuje informacje o Swift Language Version w formacie klucz-wartość. Pokaże ci wszystkie dostępne (obsługiwane) Swift Wersja językowa dla twojego Xcode i wersji aktywnej również poprzez znacznik wyboru.
Projekt ► (Wybierz cel projektu) ► Ustawienia kompilacji ► (Wpisz „swift_version” na pasku wyszukiwania) Swift Język kompilatora ► Swift Wersja językowa ► Kliknij na listę języków, aby ją otworzyć (na dowolnym z list pojawi się znacznik wyboru - pozycja, która będzie aktualną szybką wersją).
Spójrz na tę migawkę, dla łatwego zrozumienia:
Za pomocą następującego kodu programowo możesz znaleźć wersję Swift obsługiwaną przez Twój projekt.
#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
Myślę, że to poprawna odpowiedź. Łatwiej niż wzywając terminal. (szczególnie jeśli masz zainstalowaną inną wersję Xcode)
Mike Keskinov
17
To poprawna odpowiedź, ponieważ szybka wersja jest konfigurowana na podstawie celu.
Andrew Paul Simmons
2
Nie widzę tej propozycji w moim projekcie z Xcode 8.1
wyloguj się
6
możesz zobaczyć tę właściwość w najnowszych wersjach xcode
Parkhya Dev
1
@JonMcClung - Ta sama opcja jest dostępna również w Xcode 10.1. Właśnie to sprawdziłem.
Krunal
500
To, co robię, to mówię w terminalu:
$ xcrun swift -version
Dane wyjściowe dla Xcode 6.3.2 to:
AppleSwift version 1.2(swiftlang-602.0.53.1 clang-602.0.53)
Oczywiście przy założeniu, że xcrunpoprawnie wskazujesz swoją kopię Xcode. Jeśli, podobnie jak ja, żonglujesz kilkoma wersjami Xcode, możesz się martwić! Aby upewnić się, że tak jest, powiedzmy
$ xcrun --find swift
i spójrz na ścieżkę do Xcode, którą ci pokazuje. Na przykład:
/Applications/Xcode.app/...
Jeśli to twój Xcode, to wynik z -versionjest dokładny. Jeśli chcesz zmienić miejsce xcrun, użyj menu podręcznego Narzędzia wiersza poleceń w panelu preferencji Lokalizacje Xcode.
Możesz także użyć xcode-select -pdo wydrukowania ścieżki do Xkodu, którego użyje xcrun, i sudo xcode-select -s /path/to/Xcode.appdo jej zmiany.
Jack Lawrence
4
Właśnie zacząłem uczyć się programowania ios i jestem zaskoczony, że xcode nie pozwala ci wybrać wersji swift ani nawet znać wersji z GUI.
Alex
@RadekWilczak Nie wiem, co rozumiesz przez „powinno być”. Właśnie skopiowałem wysłane polecenie i wkleiłem do Terminala i nacisnąłem Return, i to działa. Więc może jest inna alternatywa, ale to, co powiedziałem, nie jest złe.
mat.
1
To dało mi złą odpowiedź. Ponieważ swift jest skonfigurowany dla każdego celu. Zobacz odpowiedź poniżej @Krunal, aby uzyskać najlepszą odpowiedź.
Andrew Paul Simmons
Zgadzam się ze wszystkimi „poprawnym sposobem jest ustawienie SWIFT_VERSION” dla każdego projektu. Jednak we wcześniejszych wersjach Xcode, takich jak 8.2, nie podaje on wyraźnie w interfejsie użytkownika, która wersja XCode jest obsługiwana w projekcie, a po prostu ma „Użyj starszej wersji językowej” w interfejsie użytkownika z Tak, Nie, nieokreślony. Podejście oparte na linii poleceń jest niezwykle przydatne, aby móc szybko wyszukać odpowiedź na pytanie, jaka jest maksymalna dostępna szybka wersja.
Xcode niekoniecznie jest wersją swift. Poza tym możesz mieć szybkie bez Xcode.
asiby
64
Począwszy od Xcode 8.3, Build Settingsma klucz Swift Language Versiono wartości szybkiej wersji, której używa twój cel.
W przypadku starszych Xcodes skorzystaj z tego rozwiązania, otwórz terminal i wpisz następujące polecenia
Przypadek 1: Zainstalowałeś tylko jedną aplikację Xcode
swift -version
Przypadek 2: Zainstalowałeś wiele aplikacji Xcode
Przełącz active developer directory(Zamień Xcode_7.3.appnastępujące polecenie na nazwę pliku aplikacji Xcode z katalogu aplikacji, dla którego chcesz sprawdzić szybką wersję)
UWAGA: Od Xcode 8 do Xcode 8.2.x możesz używać swift 2.3, nawet jeśli Xcode 8 używa swift 3.x jako domyślnej wersji szybkiej. Aby użyć swift 2.3, po prostu włącz flagę Use Legacy Swift Language Versiondo YESz, Build Settinga XCode użyje Swift 2.3 dla tego celu projektu.
Swift Language Versionnie pojawia się jako ustawienie w moim projekcie Xcode 8.2.1. Ma Use Legacy Swift Language Version.
Chris Prince
1
@ChrisPrince Tak, Swift Language Versionnie istniał tu Build Settingsaż do Xcode 8.3 .... we wcześniejszych wersjach Xcode 8.x Use Legacy Swift Language Version, No= Swift 3, Yes= = Swift 2.3
Xcode 8 używa domyślnie Swift 3.0. Ale możesz włączyć Swift 2.3. Przejdź do Ustawień kompilacji projektu i ustaw „Użyj starszej wersji szybkiej wersji językowej” na TAK.
Używam najnowszej wersji Xcode 8.3.2 (8E2002) i swift 3 w Swift Language Version. Teraz chcę zmienić to na swift 2.3, ale jest tylko jedna opcja swift 3.0, a druga nie jest określona. więc czy mógłbyś wskazać, jak to byłoby możliwe? uzyskać szybki 2.3 w moim obecnym projekcie? @alexisSchreier
Arsal
14
Aby zobaczyć domyślną wersję swift zainstalowaną na twoim komputerze, a następnie z wiersza poleceń, wpisz następujące polecenie:
swift --version
Apple Swift wersja 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
Cel: x86_64-apple-darwin17.6.0
Jest to najprawdopodobniej wersja zawarta w zainstalowanej wersji Xcode w sklepie z aplikacjami (chyba że została zmieniona).
Jeśli chcesz określić faktyczną wersję Swift używaną przez określoną wersję Xcode (na przykład beta), to z poziomu wiersza poleceń wywołaj szybki plik binarny w pakiecie Xcode i przekaż mu parametr --version
Dodatkowy wkład: używam niestandardowego skryptu node.js, aby wyodrębnić czysty ciąg znaków do użytku z dokumentacją Jazzy. Możesz skorzystać z tego, jeśli możesz znaleźć miejsce do pracy w procesie tworzenia:
Wywołany ze skryptu 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
Oczywiście możesz także użyć wyrażenia regularnego, ale rób co chcesz:]
no cóż, zamierzam rzucić główny katalog projektu, a kiedy wpiszesz „szybki język”, pokażę tylko szybką wersję na wierzchu w Ustawieniach kompilacji, nic poza tym…
Odpowiedzi:
Ustawienia kompilacji projektu zawierają blok „Swift Compiler - Languages”, który przechowuje informacje o Swift Language Version w formacie klucz-wartość. Pokaże ci wszystkie dostępne (obsługiwane) Swift Wersja językowa dla twojego Xcode i wersji aktywnej również poprzez znacznik wyboru.
Spójrz na tę migawkę, dla łatwego zrozumienia:
Za pomocą następującego kodu programowo możesz znaleźć wersję Swift obsługiwaną przez Twój projekt.
Oto wynik za pomocą Playground (z Xcode 11.x )
źródło
To, co robię, to mówię w terminalu:
Dane wyjściowe dla Xcode 6.3.2 to:
Oczywiście przy założeniu, że
xcrun
poprawnie wskazujesz swoją kopię Xcode. Jeśli, podobnie jak ja, żonglujesz kilkoma wersjami Xcode, możesz się martwić! Aby upewnić się, że tak jest, powiedzmyi spójrz na ścieżkę do Xcode, którą ci pokazuje. Na przykład:
Jeśli to twój Xcode, to wynik z
-version
jest dokładny. Jeśli chcesz zmienić miejscexcrun
, użyj menu podręcznego Narzędzia wiersza poleceń w panelu preferencji Lokalizacje Xcode.źródło
xcode-select -p
do wydrukowania ścieżki do Xkodu, którego użyje xcrun, isudo xcode-select -s /path/to/Xcode.app
do jej zmiany.Otwórz terminal i napisz:
źródło
Począwszy od Xcode 8.3,
Build Settings
ma kluczSwift Language Version
o wartości szybkiej wersji, której używa twój cel.W przypadku starszych Xcodes skorzystaj z tego rozwiązania, otwórz terminal i wpisz następujące polecenia
Przypadek 1: Zainstalowałeś tylko jedną aplikację Xcode
Przypadek 2: Zainstalowałeś wiele aplikacji Xcode
Przełącz
active developer directory
(ZamieńXcode_7.3.app
następujące polecenie na nazwę pliku aplikacji Xcode z katalogu aplikacji, dla którego chcesz sprawdzić szybką wersję)Następnie
UWAGA: Od Xcode 8 do Xcode 8.2.x możesz używać swift 2.3, nawet jeśli Xcode 8 używa swift 3.x jako domyślnej wersji szybkiej. Aby użyć swift 2.3, po prostu włącz flagę
Use Legacy Swift Language Version
doYES
z,Build Setting
a XCode użyje Swift 2.3 dla tego celu projektu.źródło
Możesz zobaczyć i wybrać, której wersji Swift używa Xcode w:
Cel -> Ustawienia kompilacji -> Swift Wersja językowa :
Jest to dostępne w Xcode 8.3 i Xcode 9 (nie sprawdziłem starszych wersji)
źródło
Swift Language Version
nie pojawia się jako ustawienie w moim projekcie Xcode 8.2.1. MaUse Legacy Swift Language Version
.Swift Language Version
nie istniał tuBuild Settings
aż do Xcode 8.3 .... we wcześniejszych wersjach Xcode 8.xUse Legacy Swift Language Version
,No
= Swift 3,Yes
= = Swift 2.3Ten post reddit pomógł mi: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Dobry stary reddit :)
źródło
Aby zobaczyć domyślną wersję swift zainstalowaną na twoim komputerze, a następnie z wiersza poleceń, wpisz następujące polecenie:
Jest to najprawdopodobniej wersja zawarta w zainstalowanej wersji Xcode w sklepie z aplikacjami (chyba że została zmieniona).
Jeśli chcesz określić faktyczną wersję Swift używaną przez określoną wersję Xcode (na przykład beta), to z poziomu wiersza poleceń wywołaj szybki plik binarny w pakiecie Xcode i przekaż mu parametr --version
źródło
i szybka wersja <--> wersja Xcode
źródło
Używam Swift z Google Colab. Oto jak to sprawdzić w Colab.
Wynik to
5.0-dev
źródło
Dodatkowy wkład: używam niestandardowego skryptu node.js, aby wyodrębnić czysty ciąg znaków do użytku z dokumentacją Jazzy. Możesz skorzystać z tego, jeśli możesz znaleźć miejsce do pracy w procesie tworzenia:
Wywołany ze skryptu Bash:
SwiftVerSlicer.js:
Oczywiście możesz także użyć wyrażenia regularnego, ale rób co chcesz:]
źródło
Po prostu wprowadzając polecenie swift w terminalu, wyświetli wersję, logując się do konsoli Swift. (Coś jak poniżej)
źródło
https://i.stack.imgur.com/Ojn3m.png
źródło
Otrzymasz to w ustawieniach projektu
źródło