xcode - programming - swift tutorial




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

Das hat irgendwie den Trick für mich gemacht:

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

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.


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.


Ich bin heute auf dasselbe Problem gestoßen, als ich versuchte, in meinem Swift-Projekt einen in Objective-C geschriebenen Pod zu verwenden, aber keine der obigen Lösungen schien zu funktionieren.

In der Poddatei hatte ich use_frameworks! geschrieben. Das Kommentieren dieser Zeile und das anschließende Ausführen der pod install dieses Problem für mich gelöst und der Fehler ist verschwunden.


Ich habe das gleiche Problem. Ich habe alle meine Importe von #import "HMSegmentedControl.h" in #import <HMSegmentedControl/HMSegmentedControl.h> .


Ich hatte das gleiche Problem. Für mich war der Grund, dass ich den gleichen Bridging-Header für meine App und meine Today Extension verwendete. Meine Today-Erweiterung enthält keine Parse, aber da sie in der Bridging-Header definiert wurde, versuchte sie, danach zu suchen. Ich habe einen neuen Bridging-Header für meine Today Extension erstellt und der Fehler ist verschwunden.


Ich hatte ein ähnliches Problem mit Hülsen. Im Grunde versucht Xcode, meine UI-Tests auszuführen, über fehlende Pods. Die Lösung dafür war viel einfacher als die oben beschriebenen:

  1. Gehe zur Projektdatei (Hauptziel kein Ziel)
  2. Klicken Sie auf den Tab "Info" (am weitesten links)
  3. Legen Sie die richtige Pod-Konfiguration für das UI-Testziel fest (Abschnitt "Konfigurationen" rechts unter "Einsatzziel")

Arbeiten!

Ich habe es in einem Thread gefunden: https://github.com/CocoaPods/CocoaPods/issues/2695

Klingt ein bisschen wie ein Käfer für Kakaofrüchte, aber ich sehe Gründe, warum es schwierig sein könnte.


Ich hatte gerade ein bestehendes Schema dupliziert und dem Projekt eine weitere Konfiguration hinzugefügt. Ich musste dem Projekt des Frameworks eine Konfiguration mit demselben Namen hinzufügen, damit auch derselbe DerivedData/($AppName)/Build/Products/($CONFIGURATION_NAME) . Andernfalls wird die .framework-Datei nicht erstellt und kann daher nicht importiert werden.


Ich musste mein lib Verzeichnis in den Suchpfaden der Benutzerkopfzeile hinzufügen:

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

(Ich verwende Xcode 6.2 auf Mavericks 10.9.5)


Mein Framework arbeitete vorher und hörte plötzlich auf zu arbeiten, und keine dieser Antworten funktionierte für mich. Ich habe das Framework in Build-Phasen> Binär mit Bibliotheken verknüpfen gelöscht und es erneut hinzugefügt. Arbeitet wieder.


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 main.storyboard hinzugefügt und es hat sich um den Fehler gekümmert.


Wenn es jemandem hilft.

In meinem Fall wurden meine obj-c-Dateien hinzugefügt, sie haben einen Referenzordner (die blauen Ordner in xcode) und die Kopfzeile konnte sie nicht finden. Habe einfach die Dateien, nicht den Ordner, vom Finder zu xcode hinzugefügt und gelöst.


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.





swift