Ich habe ein Swift-Projekt, für das ich versuche, ObjC-basierte Frameworks zu importieren. Das Framework befindet sich in einem Verzeichnis unter dem Projektpfad und wird vom Projekt in Xcode referenziert. Es wird auch zum "Link Binary with Libraries" auf der Seite "Build Phases" des Projekts hinzugefügt.
Aus irgendeinem Grund kann ich das Framework jedoch nicht in die Bridging-Header-Datei aufnehmen. Ich erhalte folgende Fehlermeldung:
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:
- Der "Install Objective-C Compatibility Header" ist auf "YES" gesetzt.
- Die Header-Suchpfade enthalten den Pfad zu den Frameworks.
Ich bin mir sicher, dass mir etwas fehlt. Wenn also jemand irgendwelche Hinweise hat, wäre das großartig.
swift
xcode
bridging-header
Dia Kharrat
quelle
quelle
Header Search Paths
Antworten:
Eine Lösung gefunden:
SWIFT_OBJC_BRIDGING_HEADER
) muss auf Zielebene und NICHT auf Projektebene festgelegt werden. Stellen Sie sicher, dass Sie den Einstellungswert auf Projektebene löschen.(Für mich scheint es ein Xcode-Fehler zu sein, da ich nicht weiß, warum er behoben wird).
quelle
Ich habe das gleiche Problem. Ich habe zum Beispiel alle meine Importe von
#import "HMSegmentedControl.h"
auf geändert#import <HMSegmentedControl/HMSegmentedControl.h>
.quelle
Ich musste mein
lib
Verzeichnis in User Header Search Paths hinzufügen :In meinem Fall
lib
enthält das Verzeichnis 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. Erst als ich${PROJECT_DIR}/lib
dem Suchpfad für den Benutzerkopf hinzugefügt habe , wurde das Testziel erstellt.(Ich verwende Xcode 6.2 unter Mavericks 10.9.5)
quelle
Wir haben dieselbe Fehlermeldung mit einer völlig anderen Ursache festgestellt.
Konfiguration:
Als wir den zweiten schnellen Testfall nach einer Reinigung (oder auf der Maschine eines Teamkollegen) hinzufügten, sahen wir diesen Fehler beim Erstellen des Einheitentestziels.
Es wurde behoben, indem dem Einheitentestziel eine Dummy-Obj-C-Klasse hinzugefügt wurde.
quelle
Wenn Sie Cocoapods verwenden, installieren Sie die Pods erneut, indem Sie den folgenden Befehl ausführen.
quelle
pod install
scheint für alle neu hinzugefügten Konfigurationen erforderlich zu sein ...Das hat irgendwie den Trick für mich getan:
quelle
Dieser Fehler trat bei der Installation der Bibliothek CocoaImageHashing mit Cocoapods auf. Das Problem war, dass die Suchpfade falsch waren. Auf der Zielebene entsprachen die Pfade unter Build-Einstellungen -> Suchpfade -> Header-Suchpfade nicht vorhandenen Ordnern, z. B. "$ {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.
quelle
Nun, es ist etwas seltsam, aber ich denke, Sie müssen Ihrer "Copy Bundle Resources" -Phase Ihres Testziels eine Ressource hinzufügen, damit alle Header von Ihrem Haupt-App-Ziel geladen werden. In meinem Fall habe ich hinzugefügt
main.storyboard
und es hat den Fehler behoben.quelle
Dies ist mir nach dem Hinzufügen / Umbenennen aktueller Konfigurationen passiert und macht Sinn.
Jede Konfiguration verwendet das von Cocoapods generierte Konfigurationsset, sodass diese Dinge übereinstimmen müssen.
Wenn Sie also Konfigurationen hinzufügen / umbenennen, müssen diese die richtigen Konfigurationssätze verwenden, und für diese Ausführung
pod install
wird dies ausgeführt.quelle
Wenn jemand hilft.
In meinem Fall haben meine obj-c-Dateien einen Referenzordner (die blauen Ordner in xcode) und der Header konnte sie nicht finden. Fügte einfach die Dateien, nicht den Ordner, vom Finder zu xcode hinzu und löste sie.
quelle
Ich hatte das gleiche Problem. Für mich war der Grund, dass ich sowohl für meine App als auch für meine Today-Erweiterung denselben Bridging-Header verwendete. Meine Today-Erweiterung enthält keine Analyse, aber da sie im Bridging-Header definiert wurde, wurde versucht, danach zu suchen. Ich habe einen neuen Bridging-Header für meine Today Extension erstellt und der Fehler ist verschwunden.
quelle
Mein Framework funktionierte vorher und hörte plötzlich auf zu arbeiten, und keine dieser Antworten funktionierte für mich. Ich habe das Framework unter Build-Phasen> Binär mit Bibliotheken verknüpfen entfernt und erneut hinzugefügt. Wieder angefangen zu arbeiten.
quelle
Ich hatte ein Problem und habe es behoben, nachdem ich 2 Stunden damit verbracht hatte, es zu finden. Meine Umgebung wie folgt:
Cocoapod 0.39.0
schnell 2.x.
XCode 7.3.1
Schritte:
quelle
Ich hatte gerade ein vorhandenes Schema dupliziert und dem Projekt eine weitere Konfiguration hinzugefügt. Ich musste dem Projekt des Frameworks eine Konfiguration mit demselben Namen hinzufügen, damit es auch im selben
DerivedData/($AppName)/Build/Products/($CONFIGURATION_NAME)
Ordner erstellt werden konnte. Andernfalls wird die .framework-Datei nicht erstellt und kann daher nicht importiert werden.quelle
Ich bin heute auf dasselbe Problem gestoßen, als ich versuchte, einen in Objective-C geschriebenen Pod in meinem Swift-Projekt zu verwenden. Keine der oben genannten Lösungen schien zu funktionieren.
In der Poddatei hatte ich
use_frameworks!
geschrieben. Das Kommentieren dieser Zeile und daspod install
erneute Ausführen dieses Problems lösten dieses Problem für mich und der Fehler verschwand.quelle
(Aktualisiert am 27. Mai 2017)
Xcode 8. Swift Project - Importieren von Ziel C.
Sachen zu wissen:
quelle
Ich hatte ein ähnliches Problem und nur eine Lösung hat für mich funktioniert. Ich habe alles versucht, was vorgeschlagen wurde, und ich wusste, dass ich meinen Bridging-Header in Ordnung gesetzt habe, weil ich eine andere Bibliothek hatte, die funktionierte.
Wenn ich die Bibliothek (Drag & Drop) ohne Cocoapods in das Projekt kopierte, konnte ich erst danach Header ohne Fehler importieren.
Ich habe die Facebook / Shimmer-Bibliothek benutzt.
quelle
Ich hatte ein ähnliches Problem mit Pods. Grundsätzlich versuchte Xcode, meine UI-Tests auszuführen, und beschwerte sich über fehlende Pods. Die Lösung hierfür war viel einfacher als die oben beschriebenen:
Arbeiten!
Ich habe es in einem Thread gefunden: https://github.com/CocoaPods/CocoaPods/issues/2695
Klingt ein bisschen wie ein Fehler für Kakaofrüchte, aber ich kann Gründe sehen, warum es ein schwieriger Fall sein könnte.
quelle
In meinem Fall musste ich nur den Simulator verlassen ...
quelle
Projekt bereinigen, Build-Ordner bereinigen, Xcode neu starten. Ich entferne einfach den Pfad unter Projekt gehe zu> Build-Einstellungen> Suche nach dem Schlüsselwort. Swift Compiler - Allgemein -> Objective-C Bridging-Header hat bei mir funktioniert.
quelle
August 2019
In meinem Fall wollte ich ein Swift-Protokoll in einer Objective-C-Headerdatei verwenden, die vom selben Ziel stammt, und dafür musste ich eine Vorwärtsdeklaration des Swift-Protokolls verwenden, um es in der Objective-C-Schnittstelle zu referenzieren. Dasselbe sollte für die Verwendung einer Swift-Klasse in einer Objective-C-Headerdatei gelten. Informationen zur Verwendung der Vorwärtsdeklaration finden Sie im folgenden Beispiel in den Dokumenten unter Einschließen von Swift-Klassen in Objective-C-Headern mit Vorwärtsdeklarationen :
quelle