J'ai un projet Swift pour lequel j'essaye d'importer des frameworks basés sur ObjC. Le framework est situé dans un répertoire sous le chemin du projet et est référencé par le projet dans Xcode. Il est également ajouté au "Lien binaire avec les bibliothèques" dans la page "Phases de construction" du projet.
Cependant, pour une raison quelconque, je n'arrive pas à inclure le framework dans le fichier Bridging-Header. J'obtiens l'erreur suivante:
BridgingHeader.h:5:9: error: 'Parse/Parse.h' file not found
#import <Parse/Parse.h>
^
<unknown>:0: error: failed to import bridging header 'BridgingHeader.h'
Choses que j'ai vérifiées:
- "Installer l'en-tête de compatibilité Objective-C" est défini sur "OUI".
- Les chemins de recherche d'en-tête incluent le chemin d'accès aux frameworks.
Je suis sûr qu'il me manque quelque chose, donc si quelqu'un a des indices, ce serait génial.
swift
xcode
bridging-header
Dia Kharrat
la source
la source
Header Search Paths
, dans ce cas, la question a aidé: DRéponses:
Trouvé une solution:
SWIFT_OBJC_BRIDGING_HEADER
) doit être défini au niveau cible et NON au niveau du projet. Assurez-vous de supprimer la valeur du paramètre au niveau du projet.(pour moi, cela ressemble à un bogue Xcode, car je ne sais pas pourquoi il le corrige).
la source
J'ai le même problème. J'ai changé toutes mes importations de
#import "HMSegmentedControl.h"
à#import <HMSegmentedControl/HMSegmentedControl.h>
par exemple.la source
J'ai dû ajouter mon
lib
répertoire dans les chemins de recherche des en-têtes d'utilisateurs:Dans mon cas, le
lib
répertoire contient le.a
fichier -library et quelques fichiers d'en-tête. Ceux-ci sont inclus dans le fichier d'en-tête de pontage. Cependant, le compilateur rapide ne les trouverait pas. Ce n'est que lorsque j'ai ajouté${PROJECT_DIR}/lib
au chemin de recherche d'en-tête de l'utilisateur qu'il a créé la cible de test.(J'utilise Xcode 6.2 sur Mavericks 10.9.5)
la source
Nous avons rencontré le même message d'erreur, avec une cause complètement différente.
Installer:
Lorsque nous avons ajouté le deuxième cas de test rapide, après un nettoyage (ou sur la machine d'un coéquipier), nous avons vu cette erreur lors de la construction de la cible de test unitaire.
Il a été corrigé en ajoutant une classe Obj-C factice à la cible de test unitaire.
la source
Si vous utilisez des cocoapodes, essayez de réinstaller les pods en exécutant la commande suivante.
la source
pod install
semble être nécessaire pour toute nouvelle configuration ajoutée ...Cela a en quelque sorte fait l'affaire pour moi:
la source
Cette erreur est apparue lors de l'installation avec Cocoapods de la bibliothèque CocoaImageHashing. Le problème était que les chemins de recherche étaient erronés. Ainsi au niveau cible, dans Paramètres de construction -> Chemins de recherche -> Chemins de recherche d'en-tête, les chemins correspondaient à des dossiers non existants, par exemple "$ {PODS_ROOT} / Headers / Public / CocoaImageHashing", lorsque la structure de dossier Headers / Public / n'existait pas. J'ai ajouté le chemin $ {PODS_ROOT} / CocoaImageHashing et l'erreur a disparu.
la source
Eh bien, c'est un peu étrange, mais je suppose que vous devez ajouter une ressource à votre phase "Copier les ressources du bundle" de votre cible de test pour lui faire charger tous les en-têtes de votre cible d'application principale. Dans mon cas, j'ai ajouté
main.storyboard
et il s'est occupé de l'erreur.la source
Cela m'est arrivé après avoir ajouté / renommé les configurations actuelles et cela a du sens.
Chaque configuration utilise un ensemble de configurations généré par les cocoapodes, donc ces éléments doivent correspondre.
Donc, si vous ajoutez / renommez des configurations, celles-ci devront utiliser les bons ensembles de configuration, et pour cela,
pod install
fera.la source
Si aide quelqu'un.
Dans mon cas, mes fichiers obj-c ont été ajoutés a un dossier de référence (les dossiers bleus dans xcode) et l'en-tête ne peut pas les trouver. Juste ajouté les fichiers, pas le dossier, du Finder à xcode et résolu.
la source
J'ai eu le même problème. Pour moi, la raison était que j'utilisais le même en-tête de pontage pour mon application et mon extension Today. My Today Extension n'inclut pas Parse, mais comme il a été défini dans l'en-tête de pontage, il essayait de le rechercher. J'ai créé un nouvel en-tête de pontage pour mon extension Aujourd'hui et l'erreur a disparu.
la source
Mon cadre fonctionnait avant et a soudainement cessé de fonctionner, et aucune de ces réponses ne fonctionnait pour moi. J'ai supprimé le framework dans Build Phases> Link Binary With Libraries, et je l'ai ré-ajouté. J'ai recommencé à travailler.
la source
J'ai eu un problème et je l'ai résolu après avoir passé 2 heures à le trouver. Mon environnement comme ci-dessous:
cocoapode 0.39.0
swift 2.x
XCode 7.3.1
Pas:
la source
Je venais de dupliquer un schéma existant et d'ajouter une autre configuration au projet. J'ai dû ajouter une configuration avec le même nom au projet du framework afin qu'il soit également intégré dans le même
DerivedData/($AppName)/Build/Products/($CONFIGURATION_NAME)
dossier. Sinon, le fichier .framework n'est pas créé et ne peut donc pas être importé.la source
J'ai rencontré le même problème aujourd'hui en essayant d'utiliser un pod écrit en Objective-C dans mon projet Swift, aucune des solutions ci-dessus ne semblait fonctionner.
Dans le podfile que j'avais
use_frameworks!
écrit. Le commentaire de cette ligne, puis la réexécution ontpod install
résolu ce problème pour moi et l'erreur a disparu.la source
(Mis à jour le 27 mai 2017)
Xcode 8. Swift Project - importation de l'objectif C.
Choses à savoir:
la source
J'ai eu un problème similaire et une seule solution a fonctionné pour moi. J'ai essayé tout ce qui était suggéré, et je savais que j'avais bien réglé mon en-tête de pontage, car j'avais une autre bibliothèque qui fonctionnait.
Lorsque j'ai copié la bibliothèque (glisser-déposer) dans le projet, sans Cocoapods, ce n'est qu'après cela que je pouvais importer des en-têtes sans erreurs.
J'ai utilisé la bibliothèque facebook / Shimmer.
la source
J'ai eu un problème similaire avec les pods. Essayant essentiellement d'exécuter mes tests d'interface utilisateur, Xcode s'est plaint de pods manquants. La solution à cela était beaucoup plus simple que toutes celles décrites ci-dessus:
Travail!
Je l'ai trouvé dans un fil: https://github.com/CocoaPods/CocoaPods/issues/2695
Cela ressemble un peu à un bug pour les cabosses de cacao, mais je peux voir les raisons pour lesquelles cela pourrait être un cas délicat.
la source
Dans mon cas, j'ai juste dû quitter le simulateur ...
la source
Nettoyer le projet, nettoyer le dossier de construction, redémarrer Xcode. Je viens de supprimer le chemin au projet goto> Paramètres de construction> Rechercher le mot-clé. Swift Compiler - Général -> L'en-tête de pont Objective-C a fonctionné pour moi.
la source
Août 2019
Dans mon cas, je voulais utiliser un protocole Swift dans un fichier d'en-tête Objective-C qui provient de la même cible et pour cela j'avais besoin d'utiliser une déclaration avant du protocole Swift pour le référencer dans l'interface Objective-C. La même chose devrait être valable pour l'utilisation d'une classe Swift dans un fichier d'en-tête Objective-C. Pour utiliser la déclaration directe, consultez l'exemple suivant de la documentation sur Inclure les classes Swift dans les en-têtes Objective-C à l'aide des déclarations directes :
la source