En suivant les instructions, j'ai créé un en-tête de pontage et ajouté à mon projet. Malheureusement, l'erreur suivante s'est produite:
: 0: erreur: impossible d'importer l'en-tête Objective-C '--- chemin - vers --- en-tête / .... h'
Dans les paramètres de construction, j'ai ajouté une chaîne de chemin de recherche d'en-tête à l'emplacement de l'en-tête de pontage, mais rien n'a aidé.
Quelqu'un a-t-il eu ce problème?
ios
swift
xcode6
bridging-header
objective-c-swift-bridge
Nikita Pronchik
la source
la source
Réponses:
Veillez à ajouter le fichier dans le dossier que votre erreur se plaint! J'ai fait la même erreur, si vous créez le fichier à partir de Xcode, il ira dans le dossier: Project-> Project-> Header.h
Et Xcode recherche Project-> Header.h
Cela signifie que vous devez placer le fichier dans le dossier de votre projet (ProjectName-> ProjectNameFolder)!
J'espère que cela pourra aider ;)
MISE À JOUR: Je ne sais pas si j'ai compris ce que vous voulez dire, mais essayez ceci pour résoudre votre problème:
1. Supprimez tous vos fichiers de pontage que vous avez créés jusqu'à présent.
2. Sélectionnez le dossier principal du projet et cliquez sur Nouveau fichier-> iOS-> Fichier d'en-tête.
3. Écrivez vos importations dans le fichier d'en-tête créé.
4. Sélectionnez le projet dans Xcode-> Build Settings, tapez dans le champ de recherche: bridging et mettez dans la clé SWIFT_OBJC_BRIDGING_HEADER le nom de votre fichier d'en-tête ou le chemin d'accès!
Si vous suivez ces étapes, votre fichier d'en-tête sera créé à l'emplacement correct!
: D J'espère que cela aide!
la source
Dans mon cas, il s'agissait en fait d'une erreur résultant d'une référence circulaire. J'avais une classe importée dans l'en-tête de pontage, et le fichier d'en-tête de cette classe importait l'en-tête swift (
<MODULE_NAME>-Swift.h
). Je faisais cela parce que dans le fichier d'en-tête Obj-C, je devais utiliser une classe déclarée dans Swift, la solution était simplement d'utiliser le@class
déclaratif.Donc, fondamentalement, l'erreur disait «Impossible d'importer l'en-tête de pontage», l'erreur au-dessus indiquait que le
<MODULE_NAME>-Swift.h
fichier était introuvable, au-dessus était une erreur pointant vers un fichier d'en-tête Obj-C spécifique (à savoir un contrôleur de vue).En inspectant ce fichier, j'ai remarqué qu'il avait le -Swift.h déclaré dans l'en-tête. Le déplacement de cette importation vers l'implémentation a résolu le problème. J'avais donc besoin d'utiliser un objet, appelons-le
MyObject
défini dans Swift, alors j'ai simplement changé l'en-tête pour direla source
Trouvez le chemin à:
Paramètres de construction / Compilateur Swift - Génération de code / En-tête de pont Objective-C
et supprimez ce fichier. Alors ça devrait aller.
la source
Cela n'affectera probablement qu'un petit pourcentage de personnes, mais dans mon cas, mon projet utilisait des CocoaPods et l'un de ces pods avait une sous-spécification avec ses propres CocoaPods. La solution consistait à utiliser des importations d'angle complet pour référencer tous les fichiers dans les sous-pods.
Plutôt que
la source
Pour moi, la suppression des données dérivées a résolu le problème, j'ai remarqué que même si je récupère un ancien commit, le même problème se produit.
Vous pouvez accéder à cette option du formulaire Fenêtre-> Projets.
la source
Pour moi, c'était parce que j'avais oublié de l'ajouter aux paramètres de construction de la cible.
la source
"nous devons indiquer à Xcode où rechercher les fichiers d'en-tête que nous répertorions dans notre en- tête de pontage . Recherchez la section Chemins de recherche et modifiez le paramètre au niveau du projet pour les chemins de recherche d'en-tête utilisateur , en ajoutant une entrée récursive pour les" Pods " répertoire: Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
la source
J'ai également rencontré ce problème et, malheureusement, il ne s'agit que d'un bogue dans le SDK + Xcode. J'ai parlé à un ingénieur de la WWDC, de cela et de quelques autres problèmes que j'avais avec CloudKit. Ces bogues seront résolus dans la prochaine graine de Xcode.
C'est la partie amusante de l'utilisation du logiciel bêta.
la source
pour d'autres qui ont des difficultés à ajouter une classe rapide dans le projet objective-c. c'est ce qui fonctionne pour moi:
et c'est tout. créez maintenant la classe swift dans votre code comme si c'était objective-c.
la source
J'ai importé certains fichiers à partir de fichiers d'en-tête bridgin à partir de cocoapodes de manière incorrecte.
Au lieu d'importer
J'ai écrit
Et c'était mon énorme erreur
la source
Ajoutez un fichier Objective-C temporaire à votre projet. Vous pouvez lui donner n'importe quel nom.
Sélectionnez Oui pour configurer un en-tête de pontage Objective-C.
Supprimez le fichier Objective-C temporaire que vous venez de créer.
Dans le fichier projectName-Bridging-Header.h que vous venez de créer, ajoutez cette ligne:
'#import <GoogleMaps / GoogleMaps.h>'
Modifiez le fichier AppDelegate.swift:
Suivez le lien pour un échantillon complet
la source
Pour moi, il ne sélectionnait pas «Copier les éléments si nécessaire» dans le chemin de destination lors de l'ajout du cadre. Ajoutez simplement à nouveau le cadre avec cette option sélectionnée.
la source
Après quelques jours de lutte, j'ai finalement réussi à intégrer avec succès l'inscription Facebook à mon application iOS. Voici les étapes (je suppose que vous avez déjà installé Facebook SDK v4.1 ou supérieur sur vos machines):
Ajouter des informations dans la pList comme mentionné ici
Créez votre application. Et wohoo! aucune erreur de compilation.
la source
J'ai le même problème pour une raison différente, voici mon cas, je construis un projet qui nécessite un menu coulissant pour être inclus, j'utilise SWRevealViewController lib pour aborder cela
lorsque j'importe les fichiers de bibliothèque, j'ajoute un sous-dossier (SWRevealViewController) sous Fichiers de prise en charge pour les fichiers .h && .m, il déclenche deux erreurs, ne peut pas importer le pont et SWRevealViewController.h n'est pas trouvé.
Comment je le répare
lorsque je déplace des fichiers vers Supporting Files directement (supprimer le sous-dossier), SWRevealViewController.m automatiquement ajouté aux phases de construction -> Compiler les sources et le problème est parti
la source
J'ai rencontré ce genre d'erreur lorsque j'ajoutais une extension Today à mon application. La cible de build pour l'extension a été générée avec le même nom d'en-tête de pontage que la cible de build de mon application. Cela conduisait à l'erreur, car l'extension ne voit pas les fichiers répertoriés dans l'en-tête de pontage de mon application.
La seule chose dont vous avez besoin est de supprimer ou de modifier le nom de l'en-tête de pontage pour l'extension et tout ira bien.
J'espère que cela aidera.
la source
J'ai en fait créé un fichier OSX Source Objective C vide sous le projet (où se trouvent tous mes fichiers Swift).
J'ai ajouté les importations puis supprimé le fichier .m .
la source
Parmi les autres correctifs, l'erreur est survenue lorsque j'ai essayé de faire Product-> Archive. Il s'avère que j'avais ceci:
Après l'avoir mis dans cette dernière ligne, cela a fonctionné.
la source
Avait un problème similaire qui ne pouvait être résolu par aucune solution ci-dessus. Mon projet utilise CocoaPods. J'ai remarqué qu'avec des erreurs, j'ai reçu un avertissement avec le message suivant:
La solution était donc assez simple. Pour le projet Pods, définissez l' indicateur Construire l'architecture active uniquement sur Non et l'erreur d'origine a disparu.
la source
Définissez En-tête de pontage de précompilation sur Non, résolvez le problème pour moi.
la source