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 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.
xcode-select -pdo wydrukowania ścieżki do Xkodu, którego użyje xcrun, i sudo xcode-select -s /path/to/Xcode.appdo jej zmiany.
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ę)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/DeveloperNastępnie
swift -versionUWAGA: 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.
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 Versionnie pojawia się jako ustawienie w moim projekcie Xcode 8.2.1. Ma Use Legacy Swift Language Version.
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
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:]