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 auf der Seite "Phasen erstellen" des Projekts zu "Binäres Binär mit Bibliotheken verknüpfen" hinzugefügt.
Aus irgendeinem Grund scheint es mir jedoch nicht möglich zu sein, das Framework in die Bridging-Header-Datei aufzunehmen. 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:
Ich bin sicher, dass mir etwas fehlt. Wenn also jemand Hinweise hat, wäre das großartig.
Eine Lösung gefunden:
Swift_OBJC_BRIDGING_HEADER
) muss auf Zielebene und NICHT auf Projektebene festgelegt werden. Löschen Sie unbedingt den Einstellungswert auf Projektebene.(Für mich scheint es ein Xcode-Fehler zu sein, da ich nicht weiß, warum er es behebt).
Ich habe das gleiche Problem. Ich habe zum Beispiel alle meine Importe von #import "HMSegmentedControl.h"
in #import <HMSegmentedControl/HMSegmentedControl.h>
geändert.
Ich musste mein lib
-Verzeichnis unter Suchpfade für Benutzerheader hinzufügen:
In meinem Fall enthält das Verzeichnis lib
die .a
- Bibliotheksdatei und einige Header-Dateien. Diese sind in der Bridging-Header-Datei enthalten. Der Swift-Compiler würde sie jedoch nicht finden. Erst als ich ${PROJECT_DIR}/lib
zum Suchpfad für Benutzerheader hinzugefügt habe, wurde das Testziel erstellt.
(Ich verwende Xcode 6.2 für Mavericks 10.9.5)
Wir haben dieselbe Fehlermeldung mit einer völlig anderen Ursache festgestellt.
Konfiguration:
Als wir den zweiten Swift-Testfall nach einem Clean (oder auf der Maschine eines Teamkollegen) hinzugefügt haben, haben wir diesen Fehler beim Erstellen des Unit-Testziels festgestellt.
Es wurde behoben, indem dem Einheitentestziel eine Dummy-Klasse Obj-C hinzugefügt wurde.
Dies hat mir irgendwie den Trick gebracht:
Es ist zwar etwas seltsam, aber ich denke, Sie müssen Ihrer "Copy Bundle Resources" -Phase Ihres Testziels eine Ressource hinzufügen, damit alle Kopfzeilen von Ihrem Hauptanwendungsziel geladen werden. In meinem Fall habe ich main.storyboard
hinzugefügt und der Fehler wurde behoben.
Dieser Fehler trat bei der Installation mit Cocoapods der Bibliothek CocoaImageHashing auf. Das Problem war, dass die Suchpfade falsch waren. Auf Zielebene in Build-Einstellungen -> Suchpfade -> Header-Suchpfade entsprachen die Pfade nicht vorhandenen Ordnern, z. B. "$ {PODS_ROOT}/Headers/Public/CocoaImageHashing", wenn die Ordnerstruktur Headers/Public Ich habe den Pfad $ {PODS_ROOT}/CocoaImageHashing hinzugefügt und der Fehler ist verschwunden.
Wenn jemandem hilft
In meinem Fall wurden meine obj-c-Dateien hinzugefügt (Referenzordner) (die blauen Ordner in xcode) und der Header konnte sie nicht finden Die Dateien, nicht der Ordner, wurden aus dem Finder zu xcode hinzugefügt und dort gelöst.
Ich hatte das gleiche Problem. Der Grund für mich war, dass ich für meine App und meine Today Extension den gleichen Bridging-Header verwendet habe. Meine Today-Erweiterung enthält Parse nicht. Da sie jedoch im Bridging-Header definiert wurde, versuchte sie, danach zu suchen. Ich habe einen neuen Bridging-Header für meine Today-Erweiterung erstellt und der Fehler verschwand.
Ich hatte ein Problem und habe das Problem behoben, nachdem ich 2 Stunden gefunden hatte. Meine Umgebung wie folgt:
cocoapod 0,39,0
Swift 2.x
XCode 7.3.1
Schritte:
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 es erneut hinzugefügt. Wieder angefangen zu arbeiten.
Wenn Sie Cocoapods verwenden, installieren Sie die Pods erneut, indem Sie den folgenden Befehl ausführen.
pod install
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 kann. Andernfalls wird die .framework-Datei nicht erstellt und kann daher nicht importiert werden.
(Stand vom 27. Mai 2017)
Xcode 8. Swift Projekt - Ziel C importieren
Sachen zu wissen:
Bei meinem Versuch, eine in Objective-C geschriebene Pod in meinem Swift-Projekt zu verwenden, stieß ich auf das gleiche Problem. Keine der oben genannten Lösungen schien zu funktionieren.
In der podfile hatte ich use_frameworks!
geschrieben. Durch Kommentieren dieser Zeile und anschließendes Ausführen von pod install
again wurde dieses Problem für mich gelöst, und der Fehler wurde behoben.
Dies ist mir nach dem Hinzufügen/Umbenennen der aktuellen Konfigurationen passiert und es ist sinnvoll.
Jede Konfiguration verwendet das von cocoapods generierte Konfigurationsset, sodass diese -Dinge übereinstimmen müssen.
Wenn Sie also Konfigurationen hinzufügen oder umbenennen, müssen diese die richtigen Konfigurationssätze verwenden, und pod install
wird dies ausführen.
Projekt reinigen, Build-Ordner bereinigen, Xcode neu starten. Ich entferne einfach den Pfad im Projekt-goto> Build-Einstellungen> Suche nach dem Stichwort. Swift Compiler - Allgemein -> Objective-C Der Bridging-Header hat für mich funktioniert.
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 Forward-Deklaration verwenden des Protokolls Swift, um es in der Objective-C-Schnittstelle zu referenzieren. Das Gleiche sollte für die Verwendung einer Swift -Klasse in einer Objective-C-Headerdatei gelten. Informationen zur Verwendung der Forward-Deklaration finden Sie im folgenden Beispiel aus dem Abschnitt docs at Swift -Klassen in Objective-C-Headern mit Forward-Deklarationen einschließen:
// MyObjcClass.h
@class MySwiftClass; // class forward declaration
@protocol MySwiftProtocol; // protocol forward declaration
@interface MyObjcClass : NSObject
- (MySwiftClass *)returnSwiftClassInstance;
- (id <MySwiftProtocol>)returnInstanceAdoptingSwiftProtocol;
// ...
@end
In meinem Fall musste ich nur den Simulator verlassen ...
Ich hatte ein ähnliches Problem und nur eine Lösung hat für mich geklappt. Ich habe alles ausprobiert, und ich wusste, dass ich meinen Überbrückungsheader gut eingestellt habe, weil ich eine andere Bibliothek hatte, die funktionierte.
Wenn ich eine Bibliothek (Drag & Drop) in das Projekt kopiert habe (ohne Cocoapods), konnte ich danach ohne Fehler Kopfzeilen importieren.
Ich habe Facebook/Shimmer-Bibliothek verwendet.
Ich hatte ein ähnliches Problem mit Hülsen. Beim Versuch, meine UI-Tests durchzuführen, beklagte sich Xcode ü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 nach einem Fehler für Kakaoschoten, aber ich kann Gründe dafür finden, warum dies ein schwieriger Fall sein könnte.