web-dev-qa-db-fra.com

Swift "Bridging-Header.h" ne me permettant pas d'instancier des classes objective-c dans des fichiers .Swift

Lorsque le code X essaie de créer automatiquement un en-tête de pontage, il se bloque à chaque fois, j'ai donc suivi les instructions sur la façon de créer manuellement un en-tête de pontage. (Créez un fichier .h, nommez-le <#PROJECT_NAME> -Bridging-Header.h, importez tous les fichiers .h dont vous avez besoin?)

Le problème est que lorsque j'essaie d'instancier une classe dans le fichier .Swift qui est inclus dans cet en-tête, rien ne se passe (il dit que la classe n'existe pas). essayez de les inclure, ce qui me fait croire que certaines choses ne se lient pas correctement.

Quelqu'un a-t-il rencontré cela? Quelqu'un sait-il comment y remédier?

21
Andy Tsen

Vous devez l'ajouter aux paramètres de construction de votre cible:

  1. Dans Xcode, si vous allez dans les paramètres de construction de votre cible et que vous faites défiler vers le bas, vous trouverez une section "Compilateur Swift - Génération de code".

  2. Définissez "En-tête de pontage Objective-C" sur <#PROJECT_NAME>-Bridging-Header.h

  3. Je ne suis pas sûr de la valeur correcte pour "Installer l'en-tête de compatibilité Objective-C", mais c'est un oui/non, vous pouvez donc basculer cela si cela ne fonctionne pas au début.

73
Nate Cook

J'ai essayé de créer un en-tête de pontage moi-même mais pour une raison quelconque, Xcode ne l'a pas aimé. J'ai donc supprimé mon fichier personnalisé, importé un fichier Obj C qui a demandé à Xcode si je voulais qu'il en crée un pour moi.

J'ai cliqué oui, et ça a marché!

8
Sean

1) créez un fichier appelé "FMDB-Bridging-Header.h"

à l'intérieur de ce fichier, tapez ce qui suit: #import "FMDB.h"

3) allez dans Build Settings -> Swift Compiler - Code Generation - add to 'Objective-C Bridging Header': FMDB-Bridging-Header.h

ou s'il a été placé dans un dossier de votre projet:

FolderName/FMDB-Bridging-Header.h

4
K.D
  1. Ajoutez un fichier d'en-tête à votre projet avec le nom "[nom-de-votre-projet] -Bridging-Header.h

  1. Allez dans Build Settings> Build Options et définissez "Embedded Content Contains Swift Code" to "Yes" (enter image description here

  2. Allez dans Build Settings> Linking et ajoutez "@ executable_path/Frameworks" aux Runpath Search Paths enter image description here

Construisez votre projet maintenant!

1
Furqan Khan

cela pourrait aider à définir le nom de l'en-tête de pontage avec sa racine de projet, comme "MyProject/MyProject-Bridging-Header.h" dans la valeur de chaîne de Swift Compiler Build key 'Objective-C En-tête de pontage "

0
Nicola Coppola