Além do título de stackoverflow.com/questions/29140476/…, não encontro nenhuma semelhança com esta pergunta que é suficiente para rotular essa pergunta, pois ela é duplicada . A essência desta questão não é como encontrar a versão do Swift programaticamente , mas como encontrar a versão do Swift de maneira geral (via terminal, Xcode ou etc.). Isso é uma grande diferença.
David Snabel
Respostas:
407
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 )
Eu acho que essa é a resposta correta. Mais fácil do que ligar para o terminal. (especialmente se você tem versão diferente do Xcode instalado)
Mike Keskinov
17
Esta é a resposta correta, porque a versão rápida é configurada por destino.
Andrew Paul Simmons
2
Não vejo essa propriedade no meu projeto com o Xcode 8.1
logoff
6
você pode ver esta propriedade sobre as últimas versões do Xcode
Parkhya Dev
1
@ JonMcClung - A mesma opção também está disponível no Xcode 10.1. Acabei de verificar.
Krunal
500
O que eu faço é dizer no Terminal:
$ xcrun swift -version
A saída para o Xcode 6.3.2 é:
AppleSwift version 1.2(swiftlang-602.0.53.1 clang-602.0.53)
Obviamente, isso pressupõe que você xcrunestá 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.
Você também pode usar xcode-select -ppara imprimir o caminho para o Xcode que o xcrun usará e sudo xcode-select -s /path/to/Xcode.appalterá-lo.
Jack Lawrence
4
Comecei a aprender o desenvolvimento do iOS e estou surpreso que o xcode não permita que você escolha a versão do swift, nem que você saiba a versão da GUI.
828 Alex
@RadekWilczak Não sei o que você quer dizer com "deveria ser". Eu apenas copiei o comando publicado e colei no Terminal e apertei Return, e ele funciona. Talvez haja outra alternativa, mas o que eu disse não está errado.
mate
1
Isso me deu a resposta errada. Porque o swift está configurado por destino. Veja a resposta abaixo em @Krunal para obter a melhor resposta.
Andrew Paul Simmons
Concordo com toda a "maneira correta é definir o SWIFT_VERSION" por projeto. No entanto, nas versões anteriores do Xcode, como 8.2, ele não indica claramente na interface do usuário qual versão do XCode é suportada no projeto e apenas possui "Usar versão do idioma do Swift herdado" na interface do usuário com Sim, Não, não especificado. A abordagem da linha de comando é extremamente útil para poder consultar rapidamente a resposta para qual é a versão máxima rápida disponível.
Esta não é necessariamente a versão do swift que o Xcode vê. Além disso, você pode ter agilidade sem ter o Xcode.
asiby
64
A partir do Xcode 8.3, a Build Settingschave possui Swift Language Versionum 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.appdo 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)
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 Versionpara YESpartir Build Settinge XCode usará Swift 2.3 para que a meta do projeto.
Swift Language Versionnão aparece como uma configuração no meu projeto do Xcode 8.2.1. Tem sim Use Legacy Swift Language Version.
Chris Prince
1
@ChrisPrince Sim, Swift Language Versionnão existia aqui em Build Settingsaté Xcode 8.3 .... em versões anteriores Xcode 8.x Use Legacy Swift Language Version, No= Swift 3 e Yes= Swift 2.3
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.
Não consigo encontrar isso através de pesquisa 'Use Legado Swift Versão da linguagem' ou 'legado'
JerryZhou
Estou usando a versão mais recente do Xcode 8.3.2 (8E2002) e o swift 3 na Swift Language Version. Agora eu quero mudar isso para swift 2.3, mas há apenas uma opção swift 3.0 e 2nd não é especificado. então você poderia orientar como isso seria possível? obter 2,3 rápido no meu projeto atual? @alexisSchreier
Arsal
14
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
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:]
Bem, eu vou jogar diretório do projeto principal e quando você digita "linguagem rápida" é apenas mostrar rápida versão em cima em Build Configurações nada mais do que isso ..
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.
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.
Aqui está o resultado usando o Playground (com o Xcode 11.x )
fonte
O que eu faço é dizer no Terminal:
A saída para o Xcode 6.3.2 é:
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 é, digae veja o caminho para o Xcode que ele mostra. Por exemplo:
Se esse é o seu Xcode, a saída
-version
é precisa. Se precisar reconfigurarxcrun
, use o menu pop-up Command Line Tools no painel de preferências Locations do Xcode.fonte
xcode-select -p
para imprimir o caminho para o Xcode que o xcrun usará esudo xcode-select -s /path/to/Xcode.app
alterá-lo.Abra o terminal e escreva:
fonte
A partir do Xcode 8.3, a
Build Settings
chave possuiSwift 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
Caso 2: você instalou vários aplicativos Xcode
Alternar
active developer directory
(SubstituaXcode_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)Então
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
paraYES
partirBuild Setting
e XCode usará Swift 2.3 para que a meta do projeto.fonte
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)
fonte
Swift Language Version
não aparece como uma configuração no meu projeto do Xcode 8.2.1. Tem simUse Legacy Swift Language Version
.Swift Language Version
não existia aqui emBuild Settings
até Xcode 8.3 .... em versões anteriores Xcode 8.xUse Legacy Swift Language Version
,No
= Swift 3 eYes
= Swift 2.3Esta publicação no reddit me ajudou: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Bom e velho reddit :)
fonte
Para ver a versão padrão do swift instalada em sua máquina e, na linha de comando, digite o seguinte:
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
fonte
e versão rápida <--> versão Xcode
fonte
Estou usando o Swift do Google Colab. Veja como verificar isso na Colab.
O resultado é
5.0-dev
fonte
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:
SwiftVerSlicer.js:
Você também pode usar regex, é claro, mas faça o que quiser:]
fonte
Ao digitar o comando swift no terminal, ele mostrará a versão, enquanto estiver acessando o console Swift (algo como abaixo)
fonte
https://i.stack.imgur.com/Ojn3m.png
fonte
Você receberá isso na configuração do projeto
fonte