Den Anweisungen folgend habe ich einen Überbrückungsheader erstellt und meinem Projekt hinzugefügt. Leider ist folgender Fehler aufgetreten:
: 0: Fehler: Objective-C-Header '--- Pfad - zu --- Header / .... h' konnte nicht importiert werden
In den Build-Einstellungen habe ich dem Speicherort des Bridging-Headers eine Zeichenfolge für den Header-Suchpfad hinzugefügt, aber nichts hat geholfen.
Hat jemand dieses Problem erlebt?
ios
swift
xcode6
bridging-header
objective-c-swift-bridge
Nikita Pronchik
quelle
quelle
Antworten:
Achten Sie darauf, die Datei dem Ordner hinzuzufügen, über den sich Ihr Fehler beschwert! Ich habe den gleichen Fehler gemacht. Wenn Sie die Datei aus Xcode erstellen, wird sie in den Ordner "Projekt-> Projekt-> Header.h" verschoben
Und Xcode sucht nach Project-> Header.h
Das heißt, Sie müssen die Datei in Ihrem Projektordner ablegen (ProjectName-> ProjectNameFolder)!
Hoffentlich hilft das ;)
AKTUALISIERT: Ich bin nicht sicher, ob ich verstanden habe, was Sie meinen, aber versuchen Sie dies, um Ihr Problem zu lösen:
1. Löschen Sie alle Ihre bisher erstellten Bridging-Dateien.
2. Wählen Sie den Hauptordner des Projekts aus und klicken Sie auf Neue Datei-> iOS-> Header-Datei.
3. Schreiben Sie Ihre Importe in die erstellte Header-Datei.
4. Wählen Sie das Projekt unter Xcode-> Build Settings aus, geben Sie das Suchfeld Bridging ein und geben Sie den Namen Ihrer Header-Datei oder den Pfad dazu in den Schlüssel SWIFT_OBJC_BRIDGING_HEADER ein!
Wenn Sie diese Schritte ausführen, wird Ihre Header-Datei am richtigen Speicherort erstellt!
: D Hoffe das hilft!
quelle
In meinem Fall war dies tatsächlich ein Fehler aufgrund eines Zirkelverweises. Ich hatte eine Klasse in den Bridging-Header importiert, und die Header-Datei dieser Klasse importierte den schnellen Header (
<MODULE_NAME>-Swift.h
). Ich habe dies getan, weil ich in der Obj-C-Headerdatei eine Klasse verwenden musste, die in Swift deklariert wurde. Die Lösung bestand darin, einfach das@class
Deklarativ zu verwenden.Im Grunde genommen
<MODULE_NAME>-Swift.h
lautete der Fehler "Fehler beim Importieren des Bridging-Headers". Der Fehler darüber lautete " Datei nicht gefunden". Darüber war ein Fehler, der auf eine bestimmte Obj-C-Header-Datei (nämlich einen View Controller) zeigte.Als ich diese Datei inspizierte, bemerkte ich, dass die Datei -Swift.h im Header deklariert war. Durch das Verschieben dieses Imports in die Implementierung wurde das Problem behoben. Also musste ich ein Objekt verwenden, nennen
MyObject
wir es in Swift definiert, also habe ich einfach den Header geändert, um zu sagenquelle
Den Pfad finden Sie unter:
Build-Einstellungen / Swift Compiler - Codegenerierung / Objective-C-Bridging-Header
und löschen Sie diese Datei. Dann solltest du in Ordnung sein.
quelle
Dies betrifft wahrscheinlich nur einen kleinen Prozentsatz der Menschen, aber in meinem Fall verwendete mein Projekt CocoaPods und einer dieser Pods hatte eine Subspezifikation mit eigenen CocoaPods. Die Lösung bestand darin, Vollwinkelimporte zu verwenden, um auf Dateien in den Sub-Pods zu verweisen.
Eher, als
quelle
Beim Löschen der abgeleiteten Daten wurde das Problem behoben. Selbst wenn ich von einem alten Commit auschecke, tritt das gleiche Problem auf.
Sie erreichen diese Option über Fenster-> Projekte.
quelle
Für mich war es, weil ich vergessen habe, es zu den Build-Einstellungen des Ziels hinzuzufügen.
quelle
"Wir müssen Xcode mitteilen, wo nach den Header-Dateien gesucht werden soll, die wir in unserem Bridging-Header auflisten . Suchen Sie den Abschnitt Suchpfade und ändern Sie die Einstellung auf Projektebene für Suchpfade für Benutzerkopfzeilen , indem Sie einen rekursiven Eintrag für die 'Pods' hinzufügen. Verzeichnis: Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
quelle
Ich habe auch dieses Problem erlebt und leider ist es nur ein Fehler im SDK + Xcode. Ich habe mit einem Ingenieur bei WWDC über dieses und einige andere Probleme gesprochen, die ich mit CloudKit hatte. Diese Fehler werden im nächsten Startwert von Xcode behoben.
Es macht Spaß, Beta-Software zu verwenden.
quelle
für andere, die Probleme haben, dem Objective-C-Projekt eine schnelle Klasse hinzuzufügen. Das ist es, was für mich funktioniert:
und das ist es. Erstellen Sie nun die schnelle Klasse in Ihrem Code so, als wäre sie objektiv-c.
quelle
Ich habe in einigen Dateien aus Bridgin-Header-Dateien von Cocoapods nicht richtig importiert.
Anstatt zu importieren
Ich hab geschrieben
Und das war mein RIESIGER Fehler
quelle
Fügen Sie Ihrem Projekt eine temporäre Objective-C-Datei hinzu. Sie können ihm einen beliebigen Namen geben.
Wählen Sie Ja, um einen Objective-C-Bridging-Header zu konfigurieren.
Löschen Sie die temporäre Objective-C-Datei, die Sie gerade erstellt haben.
Fügen Sie in der gerade erstellten Datei projectName-Bridging-Header.h die folgende Zeile hinzu:
'#import <GoogleMaps / GoogleMaps.h>'
Bearbeiten Sie die Datei AppDelegate.swift:
Folgen Sie dem Link für eine vollständige Probe
quelle
Für mich war es nicht das Auswählen von "Elemente bei Bedarf kopieren" im Zielpfad, während das Framework hinzugefügt wurde. Fügen Sie das Framework einfach mit dieser Option erneut hinzu.
quelle
Nach den ersten Tagen des Kampfes gelang es mir endlich, die Facebook-Anmeldung erfolgreich in meine iOS-App zu integrieren. Hier sind die Schritte (ich gehe davon aus, dass Sie Facebook SDK v4.1 oder höher bereits auf Ihren Computern installiert haben):
Fügen Sie Informationen in die pList ein, wie hier erwähnt
Erstellen Sie Ihre App. Und wohoo! Keine Fehler bei der Kompilierung.
quelle
Ich habe das gleiche Problem aus verschiedenen Gründen. Hier ist mein Fall, in dem ich ein Projekt erstelle, für das ein Folienmenü erforderlich ist. Ich verwende die SWRevealViewController-Bibliothek, um dies zu erreichen
Wenn ich die Bibliotheksdateien importiere, füge ich unter Unterstützende Dateien für .h && .m-Dateien einen Unterordner (SWRevealViewController) hinzu. Es werden zwei Fehler ausgelöst, Bridge kann nicht importiert werden und SWRevealViewController.h wird nicht gefunden.
Wie ich es repariere
Wenn ich Dateien direkt in unterstützende Dateien verschiebe (Unterordner löschen), wird SWRevealViewController.m automatisch zu Build Phases -> Compile Sources hinzugefügt, und das Problem ist behoben
quelle
Diese Art von Fehler trat auf, als ich meiner App eine Heute-Erweiterung hinzufügte. Das Build-Ziel für die Erweiterung wurde mit demselben Namen als Bridging-Header wie das Build-Ziel meiner App generiert. Dies führte zu dem Fehler, da die Erweiterung die im Bridging-Header meiner App aufgelisteten Dateien nicht sieht.
Das einzige, was Sie tun müssen, ist, den Namen des Bridging-Headers für die Erweiterung zu löschen oder zu ändern, und alles wird in Ordnung sein.
Hoffe, dass dies helfen wird.
quelle
Ich habe tatsächlich eine leere OSX Source Objective C-Datei unter dem Projekt erstellt (wo sich alle meine schnellen Dateien befinden).
Ich habe die Importe hinzugefügt und dann die .m- Datei gelöscht .
quelle
Unter den anderen Korrekturen trat der Fehler auf, als ich versuchte, Produkt-> Archivieren durchzuführen. Es stellte sich heraus, dass ich Folgendes hatte:
Nachdem es in dieser letzten Zeile eingestellt wurde, funktionierte es.
quelle
Hatte ein ähnliches Problem, das mit keiner der oben genannten Lösungen gelöst werden konnte. Mein Projekt verwendet CocoaPods. Ich habe festgestellt, dass ich zusammen mit Fehlern eine Warnung mit der folgenden Meldung erhalten habe:
Die Lösung war also ganz einfach. Ändern Sie für das Pods-Projekt das Flag Nur aktive Architektur erstellen in Nein, und der ursprüngliche Fehler ist verschwunden.
quelle
Setzen Sie Precompile Bridging Header auf No, um das Problem für mich zu beheben.
quelle