Après la mise à jour vers Xcode 8.2, le compilateur génère une erreur pour ma cible d'application:
"Use Legacy Swift Language Version" (Swift_VERSION) doit être configuré correctement pour les cibles qui utilisent Swift. Utilisez la commande [Modifier> Convertir> En courant Swift Menu Syntaxe…] pour choisir une version Swift ou utilisez l'éditeur de paramètres de build pour configurer directement le paramètre de build.
Mais définissez-le sur No
dans toutes les cibles que j'ai. J'ai essayé de supprimer les données dérivées, de nettoyer le répertoire du projet, de redémarrer Xcode. Rien n'y fait. Quelqu'un l'a compris?
// Modifié
Juste pour être sûr: j'ai défini TOUS mes objectifs Use Legacy Swift Language Version
à No
et le projet a bien fonctionné lors de la compilation dans Xcode 8.1. Cela ne fonctionne pas après la mise à jour vers Xcode 8.2.
// Édite 21.12.
Le problème a été corrigé dans Xcode 8.2.1
J'ai eu la même erreur. J'ai essayé de rechercher "Use Legacy Swift Language Version", mais je ne l'ai pas trouvé. J'utilise Xcode 8.3. Après avoir trop surfé et travaillé, j'ai trouvé cette solution , et cela a fonctionné pour moi.
Follow these steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to Swift 3. (or accordingly.)
J'espère que ce travail pour vous.
Corrigé dans Xcode 8.2.1 .
Voici une copie de l'intégralité du changelog de Xcode 8.2.1 :
Swift
Problèmes résolus
- Correction d'un problème qui pouvait entraîner l'échec de la construction d'un projet avec le message d'erreur "" Utiliser l'héritage Swift Version linguistique "(Swift_VERSION) doit être configuré correctement pour les cibles qui utilisent Swift" lors de l'utilisation d'un version prise en charge de Swift. (29667880)
- Xcode ne met plus en garde contre l'utilisation du code Swift 2.3 obsolète lorsque le schéma actif ne référence pas les cibles à l'aide du code Swift 2.3. (29671741)
Fermez Xcode et ouvrez le project.pbxproj
Correspondant dans l'éditeur de texte de votre choix.
Remplacez Swift_VERSION = 3.0.1;
Par Swift_VERSION = 3.0;
Pour toutes les cibles.
Rouvrez Xcode.
C'est la seule chose qui a fonctionné pour moi ...
Pour les erreurs avec les pods. Fondamentalement, nous devons activer "Legacy Swift Language". Sélectionnez votre framework de pod (en cliquant dessus dans le navigateur d'erreurs) et sous Paramètres de build, trouvez "Use Legacy Swift Language Version"
Réglez-le sur "Oui". Puis "Build & Run" à nouveau pour le tester.
Consultez cet article: http://rebeloper.com/downgrade-Swift-3-Swift-2-3-xcode-8/
Eh bien, j'ai enfin compris. J'ai supprimé le projet et le clone à nouveau, redémarré Xcode, exécuté pod repo update
et pod install
et ça a marché. Je ne sais pas pourquoi.
Cela n'a pas fonctionné pour nous :( revenir à Xcode 8.1 est préférable pour l'instant jusqu'à Apple QA est leur affaire avant leur sortie.
Si c'est une consolation, voici des choses que nous avons essayées et qui nous ont rapprochées. Nous sommes restés coincés au Clean Failed:
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache
rm -rf ~/Library/Preferences/com.Apple.Xcode.plist
redémarrez Xcode
et effectuez un nettoyage en profondeur en maintenant la touche option
Cela s'est débarrassé du Clean Failed.
Ajout de cela à votre script de pod
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['Swift_VERSION'] = '3.0'
end
end
end
C'est la façon de faire en sorte que tous les pods soient conformes à 3.0 et nous l'avons fait construire, mais à la fin de la compilation, nous avons eu cette erreur:
“Use Legacy Swift Language Version” (Swift_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly.
Comment changer l'espace de travail pour que tous les projets soient conformes à Swift 3.0? Où est ce paramètre?
J'ai eu la même erreur lors de la conversion de parties de mon application (Obj C et Swift) en un framework, mais dans mon cas, c'était que la "Swift Language Version" sous Build Settings n'était pas définie. Je l'ai mis à Swift 3 (la seule option), et l'erreur a disparu.
Il s'avère que Apple a décidé de référencer une version de la langue Swift qui n'existe pas encore dans le fichier pbxprojec. Ils ont codé en dur 3.0.1, et en modifiant manuellement le Sudo XML dans le fichier pbx en 3.0, tout a de nouveau fonctionné. Apple a apparemment ignoré certains travaux simples d'AQ avant la sortie de la version 8.2
Cela pourrait également expliquer pourquoi le basculement entre l'héritage dans les paramètres de construction a fonctionné pour certaines personnes.