Właśnie stworzyłem nowy projekt Swift w Xcode. Zastanawiam się, jakiej wersji Swift używa.
Jak mogę zobaczyć, w Xcode lub terminalu, jakiej wersji Swift używam w swoim projekcie?
Właśnie stworzyłem nowy projekt Swift w Xcode. Zastanawiam się, jakiej wersji Swift używa.
Jak mogę zobaczyć, w Xcode lub terminalu, jakiej wersji Swift używam w swoim projekcie?
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.
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
Oto wynik za pomocą Playground (z Xcode 11.x )
To, co robię, to mówię w terminalu:
$ xcrun swift -version
Dane wyjściowe dla Xcode 6.3.2 to:
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
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, 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 -version
jest dokładny. Jeśli chcesz zmienić miejsce xcrun
, użyj menu podręcznego Narzędzia wiersza poleceń w panelu preferencji Lokalizacje Xcode.
xcode-select -p
do wydrukowania ścieżki do Xkodu, którego użyje xcrun, i sudo xcode-select -s /path/to/Xcode.app
do jej zmiany.
Począwszy od Xcode 8.3, Build Settings
ma klucz Swift 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
swift -version
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ę)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
Następnie
swift -version
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
do YES
z, Build Setting
a XCode użyje Swift 2.3 dla tego celu projektu.
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)
Swift Language Version
nie pojawia się jako ustawienie w moim projekcie Xcode 8.2.1. Ma Use Legacy Swift Language Version
.
Swift Language Version
nie istniał tu Build Settings
aż do Xcode 8.3 .... we wcześniejszych wersjach Xcode 8.x Use Legacy Swift Language Version
, No
= Swift 3, Yes
= = Swift 2.3
Ten post reddit pomógł mi: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
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.
Dobry stary reddit :)
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
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift wersja 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)
Cel: x86_64-apple-darwin17.6.0
/usr/bin/swiftc --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:]