web-dev-qa-db-fra.com

Xcode 8 Beta 3 utilise le problème hérité Swift

J'ai un projet Objective-C dans Xcode 8 Beta 3. Depuis la mise à jour, chaque fois que j'essaie de construire, le message d'erreur suivant s'affiche:

“Utiliser l'ancienne version Swift version linguistique” (Swift_VERSION) doit être configuré correctement pour les cibles qui utilisent Swift. Utilisez le menu [Edition> Convertir> Vers actuel Swift Syntaxe…] pour choisir une version Swift ou utilisez l'éditeur de paramètres de construction pour configurer directement le paramètre de construction.

Quelqu'un at-il rencontré cela? Comme il s'agit d'un projet Objective-C, il n'y a pas de paramètre de construction pour configurer Swift. Je me suis également assuré qu'aucune des dépendances du projet ou des CocoaPod n'utilisait Swift. La seule solution que j'ai est d'utiliser la version bêta 2. Avez-vous des idées pour résoudre ce problème?

Je devrais également mentionner que je suis sous OSX 10.12 Bêta 2.

199
Bryan

J'ignore ce problème depuis un moment maintenant et je travaille sur d'autres choses entre-temps - j'ai finalement trouvé la solution à mon problème.

Comme mon projet est Objective-C, j'ai pensé que l'un des pods que j'utilisais utilisait Swift, j'ai vérifié chaque pod et aucun d'entre eux ne l'était.

La solution finale était que mon modèle Core Data était configuré pour générer du code dans Swift même si je les avais générés manuellement dans le menu Fichier> Nouveau> NSManagedObjectSubclass. Tout ce que j'avais à faire, c'était de passer à Objective-C.

screenshot

33
Bryan

Si vous utilisez CocoaPods et que vous voulez qu'il soit corrigé automatiquement chaque fois que vous effectuez un pod install, vous pouvez ajouter ces lignes à la fin de votre fichier podfile:

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

EDIT: Ce problème est maintenant résolu si vous utilisez CocoaPods version 1.1.1 ou ultérieure. N'oubliez pas de supprimer le paramètre ALWAYS_EMBED_Swift_STANDARD_LIBRARIES de vos principales cibles de projet.

364
Tulleb

Je viens de trouver un moyen de le réparer.

Accédez aux paramètres de construction du projet ou de la bibliothèque et définissez l'attribut de la version du compilateur Swift "Utiliser la version de langage héritée Swift" de Non spécifié à Oui ou NON.

enter image description here

118
rockdaswift

Ce problème est également visible dans Xcode-8.1. Lorsque nous ajoutons une nouvelle cible comme Extension ou Widget, une bibliothèque tierce est intégrée à la nouvelle cible à l'aide de cocopodes. Après Installation du pod . Nous pouvons faire face à la même erreur que ci-dessus.

Modifiez l’utilisation de Legacy Swift Version du langage dans chaque paramètre de construction de la bibliothèque en

Non .

enter image description here

18
Shrawan

Si vous utilisez Xcode 8 ou une version ultérieure

  1. Aller aux paramètres de construction
  2. Rechercher l'utilisation de l'ancienne version de la langue Swift
  3. Oui - Swift 2.3
  4. Non - Swift 3.0 enter image description here
9

Ajoutez le code ci-dessous à la fin du podfile.

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
5
Sunil aruru

Je travaille sur un projet qui combine les objectifs-c et Swift code que j'avais précédemment utilisé Swift version 2.3 et après la mise à niveau vers Swift 3, je ne pouvais pas construire le projet. Xcode s'est plaint du message d'erreur mentionné.

Apparemment, il y avait encore une version obsolète de Swift spécifiée dans mon fichier project.pbxproj. Swift 3.0.1 a été spécifié:

Swift_VERSION = 3.0.1;

Considérant que j’avais déjà installé la 3.0.2:

$ xcrun Swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-Apple-macosx10.9

Sooo, je l'ai corrigé en remplaçant la version Swift dans le fichier project-pbxproj par:

Swift_VERSION = 3.0;

Il semble que le spécificateur de version de niveau de correctif était trop spécifique.

4
leviathan

Dans mon cas, je viens de faire les choses suivantes

Choisissez la cible du projet => Accédez au paramètre de construction => Recherchez "Version du langage Swift" => donnez à la version actuelle Swift version

C'est tout, ça a réglé mon problème

Follow This Image

4
khusboo suhasini

J'ai eu la même erreur. J'ai essayé de rechercher "Utiliser Legacy Swift Version linguistique", mais introuvable. J'utilise Xcode 8.3.3 Après avoir trop surfé et travaillé, j'ai trouvé cette solution et cela a fonctionné pour moi . enter image description here

Here are the 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.)
4
Aklesh Rathaur

définissez "Utiliser l'ancienne version Swift Version linguistique" sur "OUI" si vous utilisez une ancienne version de Swift dans votre projet ou toute partie tierce Swift. "Non" si votre projet évolue à la version actuelle Swift. Si vous ne configurez pas votre version Swift, après chaque mise à jour et installation, le cadre du pod doit le spécifier.

3

En fait, je devais faire une recherche sur "Legacy Swift" pour pouvoir le changer de non spécifié à "Oui". Lorsque je fis simplement défiler vers la section décrite ci-dessus, je ne pus pas le changer. J'espère que cela aidera quelqu'un.

2
Mountain Man

Mon projet est écrit en swift. J'ai la même erreur avec fastlane. Ce qui est arrivé est que mon Xcode a été mis à jour automatiquement. J'ai donc dû mettre à jour mon projet sous Swift 3.0. Vous avez une tonne d'erreurs. La réparation et le débogage prenaient trop de temps et cela ne valait pas la peine à ce moment-là, alors j'ai décidé d'installer une version plus ancienne de Xcode. Rétabli mon code en 2.3. Alors fastlane beta ne fonctionnait plus. Il s'est avéré qu'il me fallait définir l'outil de ligne de commande sur 7.3. enter image description here

2
yoninja

À partir de XCode 8, vous pouvez utiliser Swift 2.3 même si XCode 8 utilise Swift 3.x comme version par défaut Swift. Pour utiliser Swift 2.3, activez simplement l’option Use Legacy Swift Language Version (Version du langage héritée) sur YES à partir du paramètre de construction, puis XCode utilisera Swift 2.3 pour cette cible de projet.

1
arunjos007

Aller à la configuration du projet pour projet et cible faire ci-dessous deux.

ALWAYS_EMBED_Swift_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version  = Swift 3

Passez à la dernière Swift 3.

Erreur résolue.

Si le problème est résolu, corrigez-le.

1
kiran

J'ai eu ce même problème après la mise à jour vers xcode 8.3.2 mais l'option "Utiliser Legacy Swift Language" avait disparu. Cela semble être la possibilité de changer maintenant: Swift Lang Version

Utilisé ce correctif avec Alamofire et d'autres bibliothèques et tout fonctionne correctement.

1
Jorge Irún

Si vous changez ALWAYS_EMBED_Swift_STANDARD_LIBRARIES en NO ne fonctionne toujours pas, c'est à cause du problème de xcode et non de votre problème. Effectuer les étapes suivantes:

1.Change ALWAYS_EMBED_Swift_STANDARD_LIBRARIES propriété à être YES sur la cible d'avertissement

2.Alors, un message d’avertissement apparaîtra dans la barre de gauche, vous recommandant de passer à Swift 3.0.

3. Puis revenez à NO. Reconstruisez le projet, le xcode détecte enfin votre modification en NO!

Problème résolu dans ce cas!

1
Wangdu Lin

Avant d’essayer des solutions compliquées, voici une vérification de base que vous devez effectuer si vous êtes nouveau sur Cocoapods et que vous rencontrez ce problème.

Vous pourriez avoir besoin de:

  • Ouvrez à nouveau votre Podfile
  • Vérifiez que la ligne correspondant à la plateforme n'est pas commentée avec un '#'. Il devrait enfin ressembler à quelque chose comme:

platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For Swift pod "MyPod" # Your mean pod :)

  • Enregistrez votre Podfile, fermez Xcode et exécutez pod install à nouveau.
  • Ouvrez votre projet.xcworkspace

Peut-être que c'est juste ça.

Si non, vous pouvez aller au-dessus ;-)

1
Diphaze

J'avais le même problème et je l'ai résolu en procédant comme suit:

Dans Projet> Paramètres de construction:

Always Embed Swift Standard Libraries = $(inherited)Use Legacy Swift Language Version = YES

Puis dans mon podfile:

config.build_settings['Swift_VERSION'] = '3.0'

L'utilisation de ces trois paramètres a supprimé tous les avertissements et m'a permis de compiler correctement.

Le plus obscur et ce qui a réellement progressé pour la compilation était de changer Swift_VERSION dans le fichier podfile de 3 à 3,0 comme suggéré ici .

1
Hector Partidas

Dans Xcode 9 beta. Accédez à Paramètres du projet, Paramètres de construction, recherchez Swift Version linguistique. Dans Xcode 9, vous devez spécifier si vous utilisez Swift 3.2 ou Swift 4.

1
Niall Kehoe