Además del título de stackoverflow.com/questions/29140476/…, no encuentro similitud con esta pregunta que sea suficiente para etiquetar esta pregunta como duplicada . La esencia de esta pregunta no es cómo encontrar la versión de Swift mediante programación , sino cómo encontrar la versión de Swift de manera general (a través de terminal o Xcode, etc.). Esta es una gran diferencia.
David Snabel
Respuestas:
407
La configuración de compilación del proyecto tiene un bloque 'Compilador Swift - Idiomas', que almacena información sobre la Versión de idioma Swift en formato clave-valor. Le mostrará todas las versiones disponibles (compatibles) de Swift Language para su Xcode y la versión activa también mediante una marca de verificación.
Proyecto ► (Seleccione el objetivo del proyecto) ► Configuración de compilación ► (Escriba 'swift_version' en la barra de búsqueda) Swift Compiler Language ► Swift Language Version ► Haga clic en Language list para abrirlo (y habrá una marca de verificación en cualquiera de las listas -elemento, esa será la versión rápida actual).
Mire esta instantánea, para una fácil comprensión:
Con la ayuda del siguiente código, programáticamente puede encontrar la versión Swift compatible con su proyecto.
#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
Aquí está el resultado usando Playground (con Xcode 11.x )
Creo que esta es la respuesta correcta. Más fácil que llamar a la terminal. (especialmente si tiene instalada una versión diferente de Xcode)
Mike Keskinov
17
Esta es la respuesta correcta porque la versión rápida se configura por objetivo.
Andrew Paul Simmons
2
No veo esta propensión en mi proyecto con Xcode 8.1
cierre la sesión el
66
puedes ver esta propiedad en las últimas versiones de xcode
Parkhya Dev
1
@JonMcClung: la misma opción también está disponible en Xcode 10.1. Lo acabo de comprobar.
Krunal
500
Lo que hago es decir en la Terminal:
$ xcrun swift -version
La salida para Xcode 6.3.2 es:
AppleSwift version 1.2(swiftlang-602.0.53.1 clang-602.0.53)
Por supuesto, se supone que xcrunestá apuntando a su copia de Xcode correctamente. Si, como yo, estás haciendo malabares con varias versiones de Xcode, ¡eso puede ser una preocupación! Para asegurarse de que así sea, diga
$ xcrun --find swift
y mira la ruta a Xcode que te muestra. Por ejemplo:
/Applications/Xcode.app/...
Si ese es su Xcode, entonces la salida de -versiones precisa. Si necesita volver a señalar xcrun, use el menú emergente Herramientas de línea de comandos en el panel de preferencias Ubicaciones de Xcode.
También puede usar xcode-select -ppara imprimir la ruta al Xcode que usará xcrun y sudo xcode-select -s /path/to/Xcode.appcambiarlo.
Jack Lawrence
44
Acabo de comenzar a aprender el desarrollo de iOS y me sorprende que xcode no te permita elegir la versión de swift ni siquiera saber la versión de la GUI.
Alex
@RadekWilczak No sé a qué te refieres con "debería ser". Simplemente copié el comando publicado y lo pegué en Terminal y presioné Retorno, y funciona. Entonces quizás haya otra alternativa, pero lo que dije no está mal.
mate
1
Esto me dio la respuesta incorrecta. Porque swift está configurado por objetivo. Vea la respuesta a continuación de @Krunal para obtener la mejor respuesta.
Andrew Paul Simmons
Estoy de acuerdo con todas las "la forma correcta es establecer la SWIFT_VERSION" por proyecto. Sin embargo, en versiones anteriores de Xcode como 8.2, no indica claramente en la interfaz de usuario qué versión de XCode es compatible con el proyecto, y solo tiene "Usar versión de lenguaje Swift heredado" en la interfaz de usuario con Sí, No, sin especificar. El enfoque de línea de comando es extremadamente útil para poder consultar rápidamente la respuesta a cuál es la versión máxima rápida disponible.
Esta no es necesariamente la versión de swift que ve Xcode. Además, puedes tener rapidez sin tener Xcode.
asiby
64
A partir de Xcode 8.3 en adelante, Build Settingstiene una clave Swift Language Versioncon un valor de versión rápida que está utilizando su objetivo.
Para códigos X más antiguos, use esta solución, abra la terminal y escriba los siguientes comandos
Caso 1: solo ha instalado una aplicación Xcode
swift -version
Caso 2: ha instalado múltiples aplicaciones Xcode
Cambiar active developer directory(Reemplazar Xcode_7.3.appdesde el siguiente comando con el nombre del archivo de la aplicación Xcode del directorio de la aplicación para el que desea verificar la versión rápida)
NOTA: De Xcode 8 a Xcode 8.2.x puede usar swift 2.3 aunque Xcode 8 use swift 3.x como versión predeterminada de swift. Para uso SWIFT 2.3, simplemente activar el indicador Use Legacy Swift Language Versiona YESpartir de Build Settingy utilizará XCode Swift 2.3 para ese objetivo del proyecto.
Swift Language Versionno aparece como una configuración en mi proyecto Xcode 8.2.1. Lo tiene Use Legacy Swift Language Version.
Chris Prince
1
@ChrisPrince Sí, Swift Language Versionno existía aquí Build Settingshasta Xcode 8.3 .... en versiones anteriores de Xcode 8.x Use Legacy Swift Language Version, No= Swift 3 y Yes= Swift 2.3
Xcode 8 usa Swift 3.0 por defecto. Pero puedes activar Swift 2.3. Vaya a Configuración de compilación del proyecto y establezca 'Usar versión de lenguaje Swift heredado' en SÍ.
No puedo encontrar esto buscando 'Usar versión de lenguaje Swift heredado' o 'Legado'
JerryZhou
Estoy usando la última versión de Xcode 8.3.2 (8E2002) y swift 3 allí en Swift Language Version. Ahora quiero cambiar esto a swift 2.3 pero solo hay una opción swift 3.0 y 2nd no está especificada. Entonces, ¿podría guiarme cómo sería posible? obtener swift 2.3 en mi proyecto actual? @alexisSchreier
Arsal
15
Para ver la versión predeterminada de swift instalada en su máquina desde la línea de comandos, escriba lo siguiente:
swift --version
Apple Swift versión 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
Objetivo: x86_64-apple-darwin17.6.0
Esta es probablemente la versión que se incluye en la versión de Xcode de la tienda de aplicaciones que ha instalado (a menos que la haya cambiado).
Si desea determinar la versión real de Swift utilizada por una versión particular de Xcode (una beta, por ejemplo), desde la línea de comando, invoque el binario swift dentro del paquete Xcode y páselo el parámetro --version
Contribución adicional: estoy usando un script node.js personalizado para extraer una cadena limpia para usar con la documentación de Jazzy. Puede obtener algún uso de esto si puede encontrar un lugar para trabajar en su proceso de desarrollo:
Invocado desde un 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
También puedes usar regex, por supuesto, pero haz lo que quieras:]
Simplemente ingresando el comando swift en la terminal, se mostrará la versión, mientras se registra en la consola Swift (algo así como a continuación)
System-IOSs-MacBook-Air:~ system$ swift
Welcome to AppleSwift version 5.1(swiftlang-1100.0.270.13 clang-1100.0.33.7).Type:help for assistance.
Bueno, yo estoy directorio de proyecto principal tiro va y cuando se escribe "lenguaje veloz" Es sólo muestran la versión rápida en la parte superior en la configuración de creación nada aparte de eso ..
Respuestas:
La configuración de compilación del proyecto tiene un bloque 'Compilador Swift - Idiomas', que almacena información sobre la Versión de idioma Swift en formato clave-valor. Le mostrará todas las versiones disponibles (compatibles) de Swift Language para su Xcode y la versión activa también mediante una marca de verificación.
Mire esta instantánea, para una fácil comprensión:
Con la ayuda del siguiente código, programáticamente puede encontrar la versión Swift compatible con su proyecto.
Aquí está el resultado usando Playground (con Xcode 11.x )
fuente
Lo que hago es decir en la Terminal:
La salida para Xcode 6.3.2 es:
Por supuesto, se supone que
xcrun
está apuntando a su copia de Xcode correctamente. Si, como yo, estás haciendo malabares con varias versiones de Xcode, ¡eso puede ser una preocupación! Para asegurarse de que así sea, digay mira la ruta a Xcode que te muestra. Por ejemplo:
Si ese es su Xcode, entonces la salida de
-version
es precisa. Si necesita volver a señalarxcrun
, use el menú emergente Herramientas de línea de comandos en el panel de preferencias Ubicaciones de Xcode.fuente
xcode-select -p
para imprimir la ruta al Xcode que usará xcrun ysudo xcode-select -s /path/to/Xcode.app
cambiarlo.Abre la Terminal y escribe:
fuente
A partir de Xcode 8.3 en adelante,
Build Settings
tiene una claveSwift Language Version
con un valor de versión rápida que está utilizando su objetivo.Para códigos X más antiguos, use esta solución, abra la terminal y escriba los siguientes comandos
Caso 1: solo ha instalado una aplicación Xcode
Caso 2: ha instalado múltiples aplicaciones Xcode
Cambiar
active developer directory
(ReemplazarXcode_7.3.app
desde el siguiente comando con el nombre del archivo de la aplicación Xcode del directorio de la aplicación para el que desea verificar la versión rápida)Entonces
NOTA: De Xcode 8 a Xcode 8.2.x puede usar swift 2.3 aunque Xcode 8 use swift 3.x como versión predeterminada de swift. Para uso SWIFT 2.3, simplemente activar el indicador
Use Legacy Swift Language Version
aYES
partir deBuild Setting
y utilizará XCode Swift 2.3 para ese objetivo del proyecto.fuente
Puede ver y seleccionar qué versión de Swift usa Xcode en:
Destino -> Configuración de compilación -> Versión de idioma rápido :
Está disponible en Xcode 8.3 y Xcode 9 (no he verificado versiones anteriores)
fuente
Swift Language Version
no aparece como una configuración en mi proyecto Xcode 8.2.1. Lo tieneUse Legacy Swift Language Version
.Swift Language Version
no existía aquíBuild Settings
hasta Xcode 8.3 .... en versiones anteriores de Xcode 8.xUse Legacy Swift Language Version
,No
= Swift 3 yYes
= Swift 2.3Esta publicación de reddit me ayudó: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Buen viejo reddit :)
fuente
Para ver la versión predeterminada de swift instalada en su máquina desde la línea de comandos, escriba lo siguiente:
Esta es probablemente la versión que se incluye en la versión de Xcode de la tienda de aplicaciones que ha instalado (a menos que la haya cambiado).
Si desea determinar la versión real de Swift utilizada por una versión particular de Xcode (una beta, por ejemplo), desde la línea de comando, invoque el binario swift dentro del paquete Xcode y páselo el parámetro --version
fuente
y versión rápida <--> versión Xcode
fuente
Estoy usando Swift de Google Colab. Aquí se explica cómo verificarlo en Colab.
El resultado es
5.0-dev
fuente
En caso de que alguien esté buscando un mapeo rápido e individual de la versión Swift basada en la versión Xcode:
Obtenido al ejecutar el siguiente comando como se menciona en diferentes versiones de Xcode:
fuente
Contribución adicional: estoy usando un script node.js personalizado para extraer una cadena limpia para usar con la documentación de Jazzy. Puede obtener algún uso de esto si puede encontrar un lugar para trabajar en su proceso de desarrollo:
Invocado desde un script Bash:
SwiftVerSlicer.js:
También puedes usar regex, por supuesto, pero haz lo que quieras:]
fuente
Simplemente ingresando el comando swift en la terminal, se mostrará la versión, mientras se registra en la consola Swift (algo así como a continuación)
fuente
https://i.stack.imgur.com/Ojn3m.png
fuente
Obtendrá esto en la configuración del proyecto
fuente