ios - protocol - xcode use swift in objective c




Swift Bridging Header-Importproblem (13)

"Wir müssen Xcode mitteilen, wo nach den Header-Dateien gesucht wird, die wir in unserem Bridging-Header auflisten. Suchen Sie den Abschnitt Suchpfade und ändern Sie die Einstellung auf Projektebene für Suchpfade für Benutzerheader , indem Sie einen rekursiven Eintrag für die Pods hinzufügen. Verzeichnis: Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/

Nach den Anweisungen habe ich einen Überbrückungs-Header erstellt und meinem Projekt hinzugefügt. Leider ist der folgende Fehler aufgetreten:

: 0: Fehler: konnte Objective-C Header '--- Pfad - zu --- Header / .... h' nicht importieren

In den Build-Einstellungen habe ich die Header-Suchpfad-Zeichenfolge zum Speicherort des Überbrückungs-Headers hinzugefügt, aber nichts half.

Hat jemand dieses Problem erlebt?


Achten Sie darauf, die Datei dem Ordner hinzuzufügen, in dem sich Ihr Fehler befindet. Ich habe den gleichen Fehler gemacht, wenn Sie die Datei von Xcode erstellen, wird es in den Ordner gehen: Project-> Project-> Header.h

Und Xcode sucht nach Project-> Header.h

Das bedeutet, dass Sie die Datei in Ihren Projektordner (ProjectName-> ProjectNameFolder) einfügen müssen!

Ich hoffe, das hilft ;)

AKTUALISIERT: Ich bin mir nicht sicher, ob ich verstanden habe, was du meinst, aber versuche das, um dein Problem zu lösen:
1. Löschen Sie alle von Ihnen erstellten Bridging-Dateien.
2. Wählen Sie den Hauptordner des Projekts 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 in Xcode-> Build Settings, geben Sie das Suchfeld ein: bridging und geben Sie den Schlüssel SWIFT_OBJC_BRIDGING_HEADER den Namen Ihrer Header-Datei oder den Pfad dazu ein!

Wenn Sie diese Schritte befolgen, wird Ihre Header-Datei am richtigen Ort erstellt!

: D Hoffe das hilft!


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 soeben erstellten Datei projectName-Bridging-Header.h folgende Zeile hinzu:

'#import <GoogleMaps / GoogleMaps.h>'

Bearbeiten Sie die AppDelegate.swift-Datei:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    GMSServices.provideAPIKey("AIza....") //iOS API key

    return true
}

Folgen Sie dem Link für die vollständige Probe


Für mich löschte das Löschen der abgeleiteten Daten es, ich bemerkte, dass selbst wenn ich aus einem alten Commit auschecke, das gleiche Problem passiert.

Sie können diese Option von Fenster-> Projekte erreichen.


Für mich war es, weil ich vergessen habe, es den Build-Einstellungen des Ziels hinzuzufügen.


Finde den Pfad unter:

Build-Einstellungen / Swift Compiler-Code-Generierung / Objective-C Bridging-Header

und lösche diese Datei. Dann sollte es dir gut gehen.


Ich habe das gleiche Problem aus verschiedenen Gründen, hier ist mein Fall Ich baue Projekt, das Dia-Menü benötigt, um einbezogen zu werden, ich benutze SWRevealViewController lib, um das zu nähern

Wenn ich die Bibliotheksdateien importiere, füge ich einen Unterordner (SWRevealViewController) unter Unterstützende Dateien für .h && .m Dateien hinzu, es löst zwei Fehler aus, kann Bridge nicht importieren und SWRevealViewController.h wird nicht gefunden.

Wie ich es behebe

Wenn ich Dateien direkt in unterstützende Dateien verschiebe (Unterordner löschen), wird SWRevealViewController.m automatisch zu Buildphasen hinzugefügt -> Quellen kompilieren und das Problem ist weg


Ich habe diese Art von Fehler erlebt, als ich eine Today-Erweiterung zu meiner App hinzugefügt habe. Das Build-Ziel für die Erweiterung wurde mit dem Namen des Bridging-Headers wie das Build-Ziel meiner App generiert. Das führte zu dem Fehler, da die Erweiterung die Dateien nicht in dem Bridging-Header meiner App aufgeführt wird.

Das einzige, was Sie tun müssen, ist löschen oder ändern Sie den Namen der Bridging-Header für die Erweiterung und alles wird gut.

Hoffe, dass dies helfen wird.


Ich habe in einigen Dateien aus Bridgin-Header-Dateien von Cocoapods nicht in der richtigen Weise importiert.

Anstatt zu importieren

#import <SomeCocoaPod/SomeCocoaPod.h>

Ich hab geschrieben

#import "SomeCocoaPod.h"

Und das war mein großer Fehler


Ich habe tatsächlich eine leere OSX Source Objective C-Datei unter dem Projekt erstellt (wo alle meine schnellen Dateien sind).

Ich habe die Importe hinzugefügt und dann die .m- Datei gelöscht.


Setze Precompile Bridging Header auf No, um das Problem für mich zu beheben.


Unter den anderen Fixes hatte ich den Fehler, als ich versuchte, Product-> Archive zu machen. Es stellte sich heraus, dass ich folgendes hatte:

Objective-C Bridging Header
  Debug (had the value)
  Release (had the value)
    Any architecture | Any SDK (this was blank - problem here!)

Nachdem es in der letzten Zeile gesetzt wurde, funktionierte es.


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 importiert den Swift-Header ( <MODULE_NAME>-Swift.h ). Ich tat dies, weil ich in der Obj-C-Header-Datei eine Klasse verwenden musste, die in Swift deklariert wurde. Die Lösung bestand darin, einfach die @class Deklarative zu verwenden.

Also im Grunde der Fehler sagte "Fehler beim Importieren von Bridging-Header", der Fehler oben sagte <MODULE_NAME>-Swift.h Datei nicht gefunden, darüber war ein Fehler auf eine bestimmte Obj-C-Header-Datei (nämlich eine View-Controller).

Als ich diese Datei untersuchte, bemerkte ich, dass die Swift.h in der Kopfzeile deklariert war. Durch Verschieben dieses Imports auf die Implementierung wurde das Problem behoben. Also musste ich ein Objekt verwenden, nennen MyObject es MyObject das in Swift definiert ist, also habe ich einfach den Header geändert, um zu sagen

@class MyObject;




objective-c-swift-bridge