web-dev-qa-db-fra.com

Migration vers Swift 4 depuis Swift 3.2 en générant l'erreur "échec de l'importation de l'en-tête de pontage"

Comme Apple a publié la version bêta de Xcode 9 avec le support de Swift 4.0. J'ai essayé de mettre à niveau mon code vers Swift 4.0 à partir de Swift 3.2. Mais il continue à me donner l'erreur failed to import bridging header alors que mon projet est construit avec succès. 

Détail d'erreur Xcode:

Echec de la conversion de la syntaxe Swift actuelle

Assurez-vous que toutes les cibles sélectionnées se sont bien construites avec la version Swift actuellement configurée avant de tenter une migration.

Quelqu'un at-il rencontré une erreur similaire lors de la mise à niveau de la base de code vers Swift 4?.

10
Varun Mehta

J'ai eu le même problème dans l'un de mes projets et la façon dont j'ai résolu ce problème est le suivant:

J'ai compris que les CocoaPods étaient le problème. 

  1. J'ai retiré CocoaPods de mon projet (si vous ne savez pas comment faire, cochez cette/ Comment supprimer CocoaPods d'un projet? )

  2. N'oubliez pas que si vous avez des tests unitaires et d'interface utilisateur, vous devez également répéter la 4ème étape à partir du lien ci-dessus. 

  3. Mettez à niveau votre base de code vers Swift 4

  4. Installez à nouveau les modules et vous avez terminé. 

J'espère que ça aide :)

5
Tino Krželj

Pour moi, ma migration de 3.2 à 4.0 a échoué, alors je reçois toujours ce message d'erreur lorsque j'essaie de modifier> Convertir> À la syntaxe actuelle de Swift ...

My Fix est simple, réglez la version Swift du paramètre du projet de la version 4.0 à la version 3.2 ou à la version que vous utilisiez. 

En effet, bien que la première migration ait échoué, Xcode a modifié la version de Swift en 4.0 dans les paramètres de votre projet.

0
Ben Kax

Probablement au moins une des classes Objective C que vous avez insérées dans votre fichier d'en-tête de pontage n'est pas compilée - commentez toutes vos entrées dans le fichier d'en-tête de pontage, puis compilez - il devrait pouvoir importer maintenant l'en-tête de pontage, mais bien sûr générer beaucoup d'erreurs en raison de classes non trouvées. Désactivez maintenant les lignes une par une pour déterminer celles qui entraînent l'échec de l'importation, puis corrigez ces fichiers.

0
TheEye

Assurez-vous que toutes les cibles sont compilées, y compris les tests. supprimer NAME.xcworkspace une fois les Cocoapod supprimés du projet

Cela a résolu le problème pour moi. 

0
Abdullah Khan

Après avoir changé le Swift Language Version dans les paramètres build de mon projet et dans tous les cibles, je devais modifier cette déclaration de fonction dans AppDelegate.Swift en:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true }

0
nyxee