J'ai un projet Swift pour lequel j'essaie d'importer des frameworks basés sur ObjC. La structure est située dans un répertoire sous le chemin du projet et est référencée par le projet dans Xcode. Il est également ajouté au "Lien binaire avec les bibliothèques" dans la page "Construire les phases" du projet.
Cependant, pour une raison quelconque, je ne peux pas sembler inclure le cadre dans le fichier Bridging-Header. Je reçois 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:
Je suis sûr que je manque quelque chose, donc si quelqu'un a des indices, ce serait génial.
Trouvé une solution:
Swift_OBJC_BRIDGING_HEADER
) doit être défini au niveau cible et PAS au niveau projet. Assurez-vous de supprimer la valeur du paramètre au niveau du projet.(pour moi, cela ressemble à un bug de Xcode, puisque je ne sais pas pourquoi il le corrige).
J'ai le même problème. J'ai changé toutes mes importations de #import "HMSegmentedControl.h"
à #import <HMSegmentedControl/HMSegmentedControl.h>
par exemple.
Je devais ajouter mon répertoire lib
dans les chemins de recherche de l'en-tête de l'utilisateur:
Dans mon cas, le répertoire lib
contient le fichier .a
- library et quelques fichiers d’en-tête. Ceux-ci sont inclus dans le fichier d'en-tête de pontage. Cependant, le compilateur Swift ne les trouverait pas. Ce n'est que lorsque j'ai ajouté ${PROJECT_DIR}/lib
au chemin de recherche de l'en-tête de l'utilisateur que la cible de test a été construite.
(J'utilise Xcode 6.2 sur Mavericks 10.9.5)
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 Swift, après un nettoyage (ou sur la machine d'un coéquipier), nous avons constaté cette erreur lors de la construction de la cible de test unitaire.
Ce problème a été résolu en ajoutant une classe factice Obj-C à la cible de test unitaire.
Cela a en quelque sorte fait le tour pour moi:
C’est un peu étrange, mais je suppose que vous devez ajouter une ressource à la phase "Copier les ressources du bundle" de votre cible de test pour lui permettre de charger tous les en-têtes de votre cible principale. Dans mon cas, j’ai ajouté main.storyboard
et il s’est occupé de l’erreur.
Cette erreur s'est produite lors de l'installation avec Cocoapods de la bibliothèque CocoaImageHashing. Le problème était que les chemins de recherche étaient incorrects. Ainsi, au niveau cible, dans Paramètres de construction -> Chemins de recherche -> Chemins de recherche d'en-têtes, les chemins correspondaient à des dossiers non existants, par exemple "$ {PODS_ROOT}/Headers/Public/CocoaImageHashing"/n’existait pas . J’ai ajouté le chemin $ {PODS_ROOT}/CocoaImageHashing et l’erreur a disparu.
Si aide quelqu'un.
Dans mon cas, mes fichiers obj-c ont été ajoutés à un dossier de référence (les dossiers bleus dans xcode) et l’en-tête ne les a pas trouvés . Je viens d’ajouter les fichiers, pas le dossier, du Finder au xcode et à les résoudre.
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. Mon extension aujourd’hui n’inclut pas Parse, mais comme elle était définie dans l’en-tête de pontage, elle tentait de la rechercher. J'ai créé un nouvel en-tête de pontage pour mon extension Today et l'erreur a disparu.
J'ai eu un problème et résolu après 2 heures passées à chercher. Mon environnement comme ci-dessous:
cocoapod 0.39.0
Swift 2.x
XCode 7.3.1
Pas:
Mon cadre fonctionnait auparavant et a soudainement cessé de fonctionner, et aucune de ces réponses ne fonctionnait pour moi. J'ai supprimé le cadre de construction dans Phases de construction> Lier le binaire avec des bibliothèques et l'a ajouté de nouveau. J'ai recommencé à travailler.
Si vous utilisez des cocoapodes, essayez de réinstaller les pods en exécutant la commande suivante.
pod install
Je venais de dupliquer un schéma existant et d'ajouter une autre configuration au projet. J'ai dû ajouter une configuration portant le même nom au projet de la structure pour que celui-ci puisse également créer le même dossier DerivedData/($AppName)/Build/Products/($CONFIGURATION_NAME)
. Sinon, le fichier .framework n'est pas créé et ne peut donc pas être importé.
(Mise à jour du 27 mai 2017)
Xcode 8. Swift Project - importation d'Objectif C.
Choses à savoir:
J'ai rencontré le même problème aujourd'hui lorsque j'essayais d'utiliser un module écrit en Objective-C dans mon projet Swift. Aucune des solutions ci-dessus ne semblait fonctionner.
J'ai écrit use_frameworks!
dans le fichier podfile. Commenter cette ligne puis exécuter pod install
again a résolu ce problème pour moi et l’erreur a disparu.
Cela m'est arrivé après avoir ajouté/renommé des configurations actuelles et cela a du sens.
Chaque configuration utilise le jeu de configurations généré par les cocoapods, de sorte que ces éléments doivent correspondre.
Donc, si vous ajoutez/renommez des configurations, celles-ci devront utiliser les bons jeux de configuration, et pour cela exécuter pod install
le fera.
Nettoyer le projet, Nettoyer le dossier de construction, Redémarrer Xcode. Je viens de supprimer le chemin d'accès au projet> Paramètres de construction> Rechercher le mot clé. Swift Compiler - Général -> L’en-tête de pontage Objective-C a fonctionné pour moi.
Août 2019
Dans mon cas, je souhaitais utiliser un protocole Swift dans un fichier d’en-tête Objective-C provenant de la même cible. Pour ce faire, j’avais besoin d’une déclaration forward du protocole Swift pour le référencer dans l'interface Objective-C. Il en va de même pour l'utilisation d'une classe Swift dans un fichier d'en-tête Objective-C. Pour utiliser la déclaration forward, voir l'exemple suivant tiré de docs à Inclure Swift Classes dans les en-têtes Objective-C à l'aide des déclarations forward :
// MyObjcClass.h
@class MySwiftClass; // class forward declaration
@protocol MySwiftProtocol; // protocol forward declaration
@interface MyObjcClass : NSObject
- (MySwiftClass *)returnSwiftClassInstance;
- (id <MySwiftProtocol>)returnInstanceAdoptingSwiftProtocol;
// ...
@end
Dans mon cas, je devais quitter le simulateur ...
J'ai eu le même problème et une seule solution a fonctionné pour moi. J'ai essayé tout ce qui était suggéré, et je savais que je réglais bien 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 j'ai pu importer des en-têtes sans erreurs.
J'ai utilisé la bibliothèque facebook/Shimmer.
J'ai eu un problème similaire avec les gousses. Essentiellement, en essayant d'exécuter mes tests d'interface utilisateur, Xcode s'est plaint des pods manquants. La solution à cela était bien plus simple que toutes les solutions décrites ci-dessus:
Travail!
Je l'ai trouvé dans un fil de discussion: https://github.com/CocoaPods/CocoaPods/issues/2695
Cela ressemble un peu à un bogue pour les cabosses de cacao, mais je peux voir les raisons pour lesquelles ce pourrait être un cas délicat.