Frage Beim Importieren von Objective-C-Frameworks in Swift-Projekt wird "Datei nicht gefunden" in Bridging Header gefunden


Ich habe ein Swift-Projekt, für das ich ObjC-basierte Frameworks importieren möchte. Das Framework befindet sich in einem Verzeichnis unter dem Pfad des Projekts und wird vom Projekt in Xcode referenziert. Es wird auch dem "Link Binary with Libraries" auf der Seite "Build Phases" hinzugefügt.

Aus irgendeinem Grund kann ich das Framework jedoch nicht in die Bridging-Header-Datei aufnehmen. Ich erhalte den folgenden Fehler:

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'

Dinge, die ich überprüft habe:

  1. Der "Install Objective-C Compatibility Header" ist auf "YES" festgelegt.
  2. Der Header-Suchpfad enthält den Pfad zu den Frameworks.

Ich bin mir sicher, dass ich etwas verpasse, also wenn jemand irgendwelche Hinweise hat, wäre das großartig.


76
2017-12-16 01:23


Ursprung


Antworten:


Eine Lösung gefunden:

  • Die Einstellung "Objective-C Bridging Header" (aka SWIFT_OBJC_BRIDGING_HEADER) muss auf der Zielebene und NICHT auf der Projektebene eingestellt sein. Vergessen Sie nicht, den Einstellungswert auf Projektebene zu löschen.

(für mich scheint es wie ein Xcode-Bug, da ich nicht weiß, warum es das repariert).


64
2018-01-18 06:26



Ich habe das gleiche Problem. Ich habe alle meine Importe geändert #import "HMSegmentedControl.h" zu #import <HMSegmentedControl/HMSegmentedControl.h> beispielsweise.


51
2018-02-12 11:13



Ich musste meine hinzufügen lib Verzeichnis in Suchpfaden für Benutzerheader:

test target settings - user header search path

In meinem Fall die lib Verzeichnis enthält die .a-library-Datei und einige Header-Dateien. Diese sind in der Bridging-Header-Datei enthalten. Der schnelle Compiler würde sie jedoch nicht finden. Nur wenn ich hinzugefügt habe ${PROJECT_DIR}/lib Für den Suchpfad des Benutzerkopfes wurde das Testziel erstellt.

(Ich verwende Xcode 6.2 auf Mavericks 10.9.5)


21
2018-04-27 18:02



Wir haben die gleiche Fehlermeldung mit einer völlig anderen Ursache gefunden.

Konfiguration:

  • App-Ziel, aller Obj-C-Code
  • Unit Testziel mit einem einzigen schnellen Testfall und einem Bridging-Header, der sich auf den App-Code bezieht

Als wir den zweiten schnellen Testfall nach einem Clean (oder auf der Maschine eines Teamkollegen) hinzugefügt haben, haben wir diesen Fehler beim Erstellen des Einheitentestziels gesehen.

Es wurde behoben, indem eine Dummy-Obj-C-Klasse zum Einheitentestziel hinzugefügt wurde.


18
2018-03-06 23:30



Das hat irgendwie den Trick für mich gemacht:

  • Projekt reinigen
  • Saubere Build-Ordner
  • Starten Sie Xcode neu

4
2017-08-04 15:11



Nun, es ist etwas seltsam, aber ich denke, Sie müssen eine Ressource zu Ihrer "Kopiere Bundle-Ressourcen" -Phase Ihres Testziels hinzufügen, damit alle Header von Ihrem Haupt-App-Ziel geladen werden. In meinem Fall habe ich hinzugefügt main.storyboard und es hat sich um den Fehler gekümmert.

enter image description here


3
2018-04-28 16:20



Dieser Fehler ist bei der Installation von CocoaImageHashing mit Cocoapods aufgetreten. Das Problem war, dass die Suchpfade falsch waren. Auf der Zielebene, in Build-Einstellungen -> Suchpfade -> Header-Suchpfade, entsprachen die Pfade nicht vorhandenen Ordnern, zum Beispiel "$ {PODS_ROOT} / Headers / Public / CocoaImageHashing", wenn die Ordnerstruktur Headers / Public / hat nicht existiert. Ich habe den Pfad $ {PODS_ROOT} / CocoaImageHashing hinzugefügt und der Fehler ist verschwunden.


3
2018-02-23 11:09



Ich hatte ein Problem und habe es behoben, nachdem ich 2 Stunden damit verbracht habe, es zu finden. Meine Umgebung wie folgt:

Kakaoapode 0.39.0

schnell 2.x

XCode 7.3.1

Schritte:

  1. Projektpfad: Projektname / Projektname / Ihre_Zusammenfassung_header.h
  2. Im Swift-Abschnitt unter Build-Einstellung sollte Objective-C Bridging Header folgendermaßen aussehen: project_name / ihr_bridging_header.h
  3. Im your_bridging_header.h, ändere alle Deklarationen von .h zu #einführen
  4. In der Klasse, die verwendet wird Ihre_3rd_party. Erklären Importieren Sie Ihre_3rd_party

2
2018-05-16 10:31