Comment savoir quelle version de Swift j'utilise?

568

Je viens de créer un nouveau projet Swift dans Xcode. Je me demande quelle version de Swift il utilise.

Comment puis-je voir, dans Xcode ou le terminal, quelle version de Swift j'utilise dans mon projet?

David Snabel
la source
7
Outre le titre de stackoverflow.com/questions/29140476/… je ne trouve aucune similitude avec cette question qui suffit pour étiqueter cette question car elle est en double . L'essence de cette question n'est pas de savoir comment trouver la version de Swift par programme , mais comment trouver la version de Swift de manière générale (via un terminal ou Xcode ou etc.). C'est une grande différence.
David Snabel

Réponses:

407

Les paramètres de construction du projet ont un bloc «Swift Compiler - Languages», qui stocke des informations sur Swift Language Version au format clé-valeur. Il vous montrera toutes les versions de langue Swift disponibles (prises en charge) pour votre Xcode et la version active également par une coche.

Projet ► (Sélectionnez la cible de votre projet) ► Paramètres de construction ► (Tapez 'swift_version' dans la barre de recherche) -item, ce sera la version swift actuelle).

Regardez cet instantané, pour une compréhension facile:

xcode avec les zones décrites mises en évidence


Avec l'aide du code suivant, vous pouvez trouver par programme la version de Swift prise en charge par votre projet.

#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

Voici le résultat en utilisant Playground (avec Xcode 11.x )

entrez la description de l'image ici

Krunal
la source
10
Je pense que c'est la bonne réponse. Plus simple que d'appeler le terminal. (surtout si vous avez une version différente de Xcode installée)
Mike Keskinov
17
C'est la bonne réponse, car la version rapide est configurée par cible.
Andrew Paul Simmons
2
Je ne vois pas cette propriété dans mon projet avec Xcode 8.1
déconnexion
6
vous pouvez voir cette propriété sur les dernières versions de xcode
Parkhya Dev
1
@JonMcClung - La même option est également disponible dans Xcode 10.1. Je viens de le vérifier.
Krunal
500

Ce que je fais, c'est dire dans le terminal:

$ xcrun swift -version

La sortie pour Xcode 6.3.2 est:

Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)

Bien sûr, cela suppose que votre xcrunpointe correctement votre copie de Xcode. Si, comme moi, vous jonglez avec plusieurs versions de Xcode, cela peut vous inquiéter! Pour vous en assurer, dites

$ xcrun --find swift

et regardez le chemin vers Xcode qu'il vous montre. Par exemple:

/Applications/Xcode.app/...

Si c'est votre Xcode, la sortie de -versionest précise. Si vous devez rediriger xcrun, utilisez le menu local Outils de ligne de commande dans le volet de préférences Emplacements de Xcode.

mat
la source
8
Vous pouvez également utiliser xcode-select -ppour imprimer le chemin d'accès au Xcode que xcrun utilisera et sudo xcode-select -s /path/to/Xcode.apppour le modifier.
Jack Lawrence
4
Je viens de commencer à apprendre le développement ios et je suis surpris que xcode ne vous permette pas de choisir la version de swift ni même de vous faire connaître la version de l'interface graphique.
Alex
@RadekWilczak Je ne sais pas ce que vous entendez par "devrait être". Je viens de copier la commande publiée et de la coller dans Terminal et d'appuyer sur Retour, et cela fonctionne. Il y a donc peut-être une autre alternative, mais ce que j'ai dit n'est pas faux.
mat
1
Cela m'a donné la mauvaise réponse. Parce que swift est configuré par cible. Voir la réponse ci-dessous de @Krunal pour la meilleure réponse.
Andrew Paul Simmons
Je suis d'accord avec tous les "la bonne façon est de définir la SWIFT_VERSION" par projet. Cependant, dans les versions antérieures de Xcode comme 8.2, il n'indique pas clairement dans l'interface utilisateur quelle version de XCode est prise en charge dans le projet, et a simplement "Utiliser la version du langage Swift hérité" dans l'interface utilisateur avec Oui, Non, non spécifié. L'approche en ligne de commande est extrêmement utile pour pouvoir interroger rapidement la réponse à la version max swift disponible.
truedat101
104

Ouvrez le terminal et écrivez:

swift -version
Alzayed
la source
12
Ce n'est pas nécessairement la version de swift que Xcode voit. En outre, vous pouvez avoir rapidement sans avoir Xcode.
asiby
64

À partir de Xcode 8.3, la Build Settingsclé a Swift Language Versionune valeur de version rapide que votre cible utilise.

Pour les anciens Xcodes, utilisez cette solution, ouvrez le terminal et saisissez les commandes suivantes

Cas 1: vous n'avez installé qu'une seule application Xcode

swift -version

Cas 2: vous avez installé plusieurs applications Xcode

  • Commutateur active developer directory(remplacez la Xcode_7.3.appcommande suivante par le nom de votre fichier d'application Xcode du répertoire d' application pour lequel vous souhaitez vérifier la version rapide)

     sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
  • alors

     swift -version

REMARQUE: De Xcode 8 à Xcode 8.2.x, vous pouvez utiliser swift 2.3 même si Xcode 8 utilise swift 3.x comme version swift par défaut. Pour une utilisation rapide 2.3, il suffit d' allumer le drapeau Use Legacy Swift Language Versionà YESpartir Build Settinget XCode utilisera Swift 2.3 pour cet objectif du projet.

Aditya Deshmane
la source
21

Vous pouvez voir et sélectionner la version de Swift que Xcode utilise dans:

Cible -> Paramètres de construction -> Version en langue Swift :

entrez la description de l'image ici

Ceci est disponible dans Xcode 8.3 et Xcode 9 (je n'ai pas vérifié les anciennes versions)

joern
la source
2
Swift Language Versionn'apparaît pas comme paramètre dans mon projet Xcode 8.2.1. C'est vrai Use Legacy Swift Language Version.
Chris Prince
1
@ChrisPrince Oui, Swift Language Versionn'existait pas ici Build Settingsjusqu'à Xcode 8.3 .... dans les versions précédentes de Xcode 8.x Use Legacy Swift Language Version, No= Swift 3 et Yes= Swift 2.3
William GP
17

Ce message reddit m'a aidé: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8 utilise Swift 3.0 par défaut. Mais vous pouvez activer Swift 2.3. Accédez aux paramètres de construction du projet et définissez «Utiliser la version de langue Swift héritée» sur OUI.

Bon vieux reddit :)

alexisSchreier
la source
1
Je ne trouve pas cela en recherchant «Utiliser la version linguistique de Legacy Swift» ou «Legacy»
JerryZhou
J'utilise la dernière version Xcode 8.3.2 (8E2002) et swift 3 dans Swift Language Version. Maintenant, je veux changer cela en swift 2.3 mais il n'y a qu'une seule option swift 3.0 et 2nd n'est pas spécifié. Alors, pourriez-vous expliquer comment cela serait possible? obtenir rapidement 2.3 dans mon projet actuel? @alexisSchreier
Arsal
15

Pour voir la version par défaut de swift installée sur votre ordinateur, puis à partir de la ligne de commande, tapez ce qui suit:

swift --version

Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)

Cible: x86_64-apple-darwin17.6.0

Il s'agit très probablement de la version incluse dans la version App Store de Xcode que vous avez installée (sauf si vous l'avez modifiée).

Si vous voulez déterminer la version réelle de Swift utilisée par une version particulière de Xcode (une bêta, par exemple), puis à partir de la ligne de commande, appelez le binaire swift dans le bundle Xcode et passez-lui le paramètre --version

/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version

Apple Swift version 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)

Cible: x86_64-apple-darwin17.6.0

Paul King
la source
1

J'utilise Swift de Google Colab. Voici comment le vérifier dans Colab.

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

Le résultat est 5.0-dev

korakot
la source
0

Dans le cas où quelqu'un chercherait un mappage rapide de la version Swift basée sur la version 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

Obtenu en exécutant la commande suivante comme mentionné sur différentes versions de Xcode:

/Applications/Xcode11.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Alpana
la source
-1

Contribution bonus: j'utilise un script node.js personnalisé pour extraire une chaîne propre à utiliser avec la documentation Jazzy. Vous pourriez vous en servir si vous pouvez trouver un endroit pour l'intégrer dans votre processus de développement:

Appelé à partir d'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

Vous pouvez également utiliser l'expression régulière bien sûr, mais faites ce que vous voulez:]


la source
-1

En entrant simplement la commande swift dans le terminal, il affichera la version, tout en se connectant à la console Swift. (Quelque chose comme ci-dessous)

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.
SuperNova
la source
-1
  1. Sélectionnez votre projet
  2. Paramètre de construction
  3. rechercher "swift language"
  4. vous pouvez maintenant voir quelle version rapide vous utilisez dans votre projet

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

goti viral
la source
En quoi est-ce différent de la première solution donnée dans stackoverflow.com/a/46080904/1187415 ?
Martin R
eh bien je vais jeter le répertoire principal du projet et lorsque vous tapez "langue rapide", il ne montre que la version rapide en haut dans les paramètres de construction rien d'autre que cela ..
viral goti
-1

Vous obtiendrez cela dans le cadre du projet

entrez la description de l'image ici

FARUQUE HOSSAIN
la source