web-dev-qa-db-fra.com

Utilisez Legacy Swift Version de la langue - Xcode 8.2

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

20
Aleš Oskar Kocur

Trouvé autour du travail. J'ai parcouru chaque cible (et les paramètres du projet, donc à la fois dans le projet et la cible) dans mon projet, basculé le "Use Legacy Swift Version linguistique "de" Non "à" Oui "et revenir à" Non "pour chacun. Le projet a ensuite été reconstruit.

enter image description here

32
zumzum

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.

5
Aklesh Rathaur

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)
4
Cœur

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.

3
Klaas

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"

enter image description here

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/

3
karenms

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.

1
Aleš Oskar Kocur

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?

0
Laser Hawk

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.

0
ScottyB

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.

0
Laser Hawk