¿Cómo veo qué versión de Swift estoy usando?


568

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?


77
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:

xcode con las áreas descritas resaltadas


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 )

ingrese la descripción de la imagen aquí


10
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:

Apple Swift 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.


8
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.
truedat101

104

Abre la Terminal y escribe:

swift -version

12
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)

     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 Versiona YESpartir de Build Settingy utilizará XCode Swift 2.3 para ese objetivo del proyecto.


21

Puede ver y seleccionar qué versión de Swift usa Xcode en:

Destino -> Configuración de compilación -> Versión de idioma rápido :

ingrese la descripción de la imagen aquí

Está disponible en Xcode 8.3 y Xcode 9 (no he verificado versiones anteriores)


2
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
William GP

17

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 :)


1
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

/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



1

Estoy usando Swift de Google Colab. Aquí se explica cómo verificarlo en Colab.

!/swift/toolchain/usr/bin/swift --version

El resultado es 5.0-dev


0

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

-1

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:]


-1

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.

-1
  1. Selecciona tu proyecto
  2. Configuración de compilación
  3. buscar "lenguaje rápido"
  4. ahora puede ver qué versión rápida está utilizando en su proyecto

https://i.stack.imgur.com/Ojn3m.png


¿Cómo es eso diferente de la primera solución dada en stackoverflow.com/a/46080904/1187415 ?
Martin R

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 ..
viral Goti

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.