Acabei de criar um novo projeto Swift no Xcode. Eu estou querendo saber qual versão do Swift está usando.
Como posso ver, no Xcode ou no terminal, qual versão do Swift estou usando dentro do meu projeto?
Acabei de criar um novo projeto Swift no Xcode. Eu estou querendo saber qual versão do Swift está usando.
Como posso ver, no Xcode ou no terminal, qual versão do Swift estou usando dentro do meu projeto?
Respostas:
As configurações de construção do projeto têm um bloco 'Swift Compiler - Languages', que armazena informações sobre a Swift Language Version no formato de valor-chave. Ele mostrará todas as versões do idioma Swift disponíveis (suportadas) para o seu Xcode e versão ativa também com uma marca de seleção.
Projeto ► (Selecione o destino do seu projeto) ► Configurações de compilação ► (Digite 'swift_version' na barra de pesquisa) Swift Compiler Language ► Swift Language Version ► Clique na lista Idioma para abri-lo (e haverá uma marca de seleção em qualquer uma das listas item, que será a versão rápida atual).
Veja este instantâneo, para facilitar o entendimento:
Com a ajuda do código a seguir, você pode encontrar programaticamente a versão Swift suportada pelo seu projeto.
#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
Aqui está o resultado usando o Playground (com o Xcode 11.x )
O que eu faço é dizer no Terminal:
$ xcrun swift -version
A saída para o Xcode 6.3.2 é:
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
Obviamente, isso pressupõe que você xcrun
está apontando para sua cópia do Xcode corretamente. Se, como eu, você está manipulando várias versões do Xcode, isso pode ser uma preocupação! Para ter certeza de que é, diga
$ xcrun --find swift
e veja o caminho para o Xcode que ele mostra. Por exemplo:
/Applications/Xcode.app/...
Se esse é o seu Xcode, a saída -version
é precisa. Se precisar reconfigurar xcrun
, use o menu pop-up Command Line Tools no painel de preferências Locations do Xcode.
xcode-select -p
para imprimir o caminho para o Xcode que o xcrun usará e sudo xcode-select -s /path/to/Xcode.app
alterá-lo.
A partir do Xcode 8.3, a Build Settings
chave possui Swift Language Version
um valor da versão rápida que seu destino está usando.
Para Xcodes mais antigos, use esta solução, abra o terminal e digite o (s) seguinte (s) comando (s)
Caso 1: você instalou apenas um aplicativo Xcode
swift -version
Caso 2: você instalou vários aplicativos Xcode
Alternar active developer directory
(Substitua Xcode_7.3.app
do seguinte comando pelo nome do arquivo do aplicativo Xcode no diretório de aplicativos para o qual você deseja verificar a versão rápida)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
Então
swift -version
NOTA: Do Xcode 8 ao Xcode 8.2.x, você pode usar o swift 2.3, mesmo que o Xcode 8 use o swift 3.x como versão rápida padrão. Para uso SWIFT 2.3, basta ligar bandeira Use Legacy Swift Language Version
para YES
partir Build Setting
e XCode usará Swift 2.3 para que a meta do projeto.
Você pode ver e selecionar qual versão Swift Xcode está usando:
Alvo -> Configurações de compilação -> Versão do idioma Swift :
Está disponível no Xcode 8.3 e Xcode 9 (não verificou versões anteriores)
Swift Language Version
não aparece como uma configuração no meu projeto do Xcode 8.2.1. Tem sim Use Legacy Swift Language Version
.
Swift Language Version
não existia aqui em Build Settings
até Xcode 8.3 .... em versões anteriores Xcode 8.x Use Legacy Swift Language Version
, No
= Swift 3 e Yes
= Swift 2.3
Esta publicação no reddit me ajudou: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
O Xcode 8 usa o Swift 3.0 como padrão. Mas você pode ativar o Swift 2.3. Vá para as Configurações de compilação do projeto e defina 'Usar versão do idioma do Legacy Swift' para YES.
Bom e velho reddit :)
Para ver a versão padrão do swift instalada em sua máquina e, na linha de comando, digite o seguinte:
swift --version
Apple Swift versão 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
Alvo: x86_64-apple-darwin17.6.0
Essa é provavelmente a versão incluída na versão da Xcode da loja de aplicativos que você instalou (a menos que você a tenha alterado).
Se você quiser determinar a versão real do Swift que está sendo usada por uma versão específica do Xcode (um beta, por exemplo) e, a partir da linha de comando, chame o binário swift no pacote Xcode e passe o parâmetro --version
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift versão 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)
Alvo: x86_64-apple-darwin17.6.0
/usr/bin/swiftc --version
Contribuição bônus: estou usando um script node.js personalizado para extrair uma sequência limpa para uso com a documentação do Jazzy. Você pode usar isso de alguma maneira, se encontrar um local para trabalhar no seu processo de desenvolvimento:
Chamado a partir de um script 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
Você também pode usar regex, é claro, mas faça o que quiser:]
Ao digitar o comando swift no terminal, ele mostrará a versão, enquanto estiver acessando o console Swift (algo como abaixo)
System-IOSs-MacBook-Air:~ system$ swift
Welcome to Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7).
Type :help for assistance.