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?
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?
Réponses:
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:
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 )
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 xcrun
pointe 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 -version
est 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.
xcode-select -p
pour imprimer le chemin d'accès au Xcode que xcrun utilisera et sudo xcode-select -s /path/to/Xcode.app
pour le modifier.
À partir de Xcode 8.3, la Build Settings
clé a Swift Language Version
une 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.app
commande 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
à YES
partir Build Setting
et XCode utilisera Swift 2.3 pour cet objectif du projet.
Vous pouvez voir et sélectionner la version de Swift que Xcode utilise dans:
Cible -> Paramètres de construction -> Version en langue Swift :
Ceci est disponible dans Xcode 8.3 et Xcode 9 (je n'ai pas vérifié les anciennes versions)
Swift Language Version
n'apparaît pas comme paramètre dans mon projet Xcode 8.2.1. C'est vrai Use Legacy Swift Language Version
.
Swift Language Version
n'existait pas ici Build Settings
jusqu'à 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
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 :)
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
/usr/bin/swiftc --version
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
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:]
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.