Acabo de crear un nuevo proyecto Swift dentro de Xcode. Me pregunto qué versión de Swift está usando.
¿Cómo puedo ver, en Xcode o en la terminal, qué versión de Swift estoy usando dentro de mi proyecto?
Acabo de crear un nuevo proyecto Swift dentro de Xcode. Me pregunto qué versión de Swift está usando.
¿Cómo puedo ver, en Xcode o en la terminal, qué versión de Swift estoy usando dentro de mi proyecto?
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.
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 )
Lo que hago es decir en la Terminal:
$ xcrun swift -version
La salida para Xcode 6.3.2 es:
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
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, 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 -version
es 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.
xcode-select -p
para imprimir la ruta al Xcode que usará xcrun y sudo xcode-select -s /path/to/Xcode.app
cambiarlo.
A partir de Xcode 8.3 en adelante, Build Settings
tiene una clave Swift 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
swift -version
Caso 2: ha instalado múltiples aplicaciones Xcode
Cambiar active developer directory
(Reemplazar Xcode_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)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
Entonces
swift -version
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
a YES
partir de Build Setting
y utilizará XCode Swift 2.3 para ese objetivo del proyecto.
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)
Swift Language Version
no aparece como una configuración en mi proyecto Xcode 8.2.1. Lo tiene Use Legacy Swift Language Version
.
Swift Language Version
no existía aquí Build Settings
hasta Xcode 8.3 .... en versiones anteriores de Xcode 8.x Use Legacy Swift Language Version
, No
= Swift 3 y Yes
= Swift 2.3
Esta publicación de reddit me ayudó: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
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Í.
Buen viejo reddit :)
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
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift versión 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)
Objetivo: x86_64-apple-darwin17.6.0
/usr/bin/swiftc --version
En caso de que alguien esté buscando un mapeo rápido e individual de la versión Swift basada en la versión Xcode:
Xcode 11.5 : Swift version 5.2.4
Xcode 11.4 : Swift version 5.2
Xcode 11.3 : Swift version 5.1.3
Xcode 11.2.1: Swift version 5.1.2
Obtenido al ejecutar el siguiente comando como se menciona en diferentes versiones de Xcode:
/Applications/Xcode11.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --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 Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7).
Type :help for assistance.