web-dev-qa-db-fra.com

Xcode ne crée pas automatiquement un en-tête de pontage?

J'ai importé un fichier Obj-C dans mon projet Swift et Xcode m'a automatiquement invité à créer un fichier d'en-tête de pontage comme prévu. Cependant, j'ai supprimé les deux fichiers (déplacés vers la corbeille) pour apporter des modifications, mais lorsque j'essaie d'importer à nouveau le fichier Obj-C, l'invite n'apparaît plus. Quelle est la raison? J'ai même testé ce même scénario dans un autre projet. Il semble qu'une fois que j'ai supprimé l'en-tête de pontage créé automatiquement par Xcode, il ne remettra pas l'invite de nouveau à nouveau. Pourquoi est-ce?

34
John Durand

La raison de votre problème est que les paramètres de construction de Xcode contiennent toujours le chemin du fichier d’en-tête de pontage généré automatiquement. Vous ne pouvez pas obtenir d'erreur de génération car le fichier d'en-tête (ProjectName-Bridging-Header.h) existe toujours dans votre répertoire de projet.

Comment résoudre:

Cliquez sur la cible de votre projet, allez dans l'onglet Construire les paramètres ( choisissez tous au lieu de basic ), recherchez Bridging Header. Vous pouvez voir l'entrée de chemin générée par Xcode. Sélectionnez-le et cliquez sur le bouton Supprimer.

Assurez-vous également de supprimer le fichier d'en-tête de pontage généré automatiquement par Xcode (ProjectName-Bridging-Header.h) de votre répertoire de projet Xcode.

Maintenant, essayez d'importer à nouveau le fichier Obj-C. Vous pouvez voir l'invite pour créer un fichier d'en-tête de pontage comme prévu.

 enter image description here

77
Shamsudheen TK

Fichier -> Nouveau fichier -> Fichier d'en-tête

Enregistrez-le en tant qu'en-tête YourApp-Bridging

Ensuite, allez dans Paramètres de construction, recherchez "En-tête de pontage Objective-C" (comme indiqué précédemment) et passez à votre en-tête de pontage en tant que: YourApp/YourApp-Bridging-Header.h Où "YourApp /" est un nom d'application. Il peut contenir des espaces, par exemple "Votre application /".

Dans mon cas, dans xCode 7.3.1 cela fonctionne

19
Iulian Nikolaiev

Il existe différentes façons de créer un en-tête de pontage dans xcode en mentionnant/suggéré ci-dessus. Ici, je voudrais vous donner le meilleur moyen de créer Bridge.

  1. Image1 montre qu'il n'y a pas de pontage au moment actuel.

 Image1

  1. Image2 montre que j'ai copié un dossier contenant les fichiers d'en-tête d'objectif-c, après la copie, une fenêtre contextuelle apparaît à l'écran.

 Image2

  1. Image3 affiche le message contextuel. Mais après avoir appuyé sur le bouton d’arrivée, vous remarquerez qu’il n’ya toujours pas de pont. pour référence voir image2.

 Image3

  1. Maintenant, dans image5 & 6, je viens de glisser-déposer le fichier d'en-tête objective-c, après quoi vous obtiendrez un message contextuel.

 Image4

  1. Après avoir appuyé sur le bouton de fin, vous obtenez un message du type Voulez-vous configurer un en-tête de pontage Objective-C? Après avoir appuyé sur le bouton Oui, vous obtenez votre en-tête de pont, que vous pouvez voir dans image5.

 Image5

si vous souhaitez conserver votre en-tête dans un groupe, utilisez Nouveau groupe et faites glisser votre fichier dans ce groupe. 

 Image6

Ne créez jamais de dossier, sinon vous obtiendrez une erreur à cause de cela.

7
Kumar

jetez un coup d’œil sous les paramètres de votre projet -> paramètres de construction, faites défiler jusqu’à la section User-Defined, voyez s’il possède une clé appelée Swift_OBJC_BRIDGING_HEADER et si elle a une valeur. si c'est là qu'il pense probablement que vous en avez déjà un, dans ce cas, recréez simplement le fichier portant le même nom.

4
Fonix
  1. Fichier de pont uniquement Invite une fois dans un projet.

  2. Si vous supprimez le fichier par accident, vous devez créer un nouveau fichier pont. C'est le même.

  3. Aller à File->New File->Header File, et le nom devrait être YourProjectName-Bridging-Header, sinon Il ne peut pas être reconnu.

3
ronan

Si vous souhaitez le configurer manuellement, allez simplement dans Paramètres de construction et modifiez la sélection en ALL de Basique (par défaut) ou personnalisé.

Comme les champs vides sont masqués pour faciliter la tâche de l'utilisateur final moyen, si vous manquez l'invite pour ajouter l'en-tête de pontage, vous aurez peut-être de la difficulté à le trouver manuellement. De plus, l'option de recherche n'inclut pas les champs cachés. 

Changer à tout et le compilateur Swift - la section Général devrait apparaître avec un paramètre enfant de "En-tête de pontage Objective-C"

0
Unome