it-swarm.com.de

Swift Problem beim Import von Bridging-Headern

Nach den Anweisungen habe ich einen Überbrückungsheader erstellt und meinem Projekt hinzugefügt. Leider ist folgender Fehler aufgetreten:

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

Screenshot 1

In den Build-Einstellungen habe ich den Header-Suchpfad zum Speicherort des Bridging-Headers hinzugefügt, aber nichts hat geholfen.

Hat jemand dieses Problem erlebt?

118
Nikita Pronchik

Fügen Sie die Datei in den Ordner ein, über den sich Ihr Fehler beschwert! 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 heißt, Sie müssen die Datei in Ihrem Projektordner ablegen (ProjectName-> ProjectNameFolder)!

Ich hoffe, das hilft ;)

AKTUALISIERT: Ich bin nicht sicher, ob ich verstanden habe, was Sie meinen, aber versuchen Sie Folgendes, um Ihr Problem zu lösen:
1. Löschen Sie alle Ihre bisher 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 aus, geben Sie in das Suchfeld: bridging ein und geben Sie in den Schlüssel Swift_OBJC_BRIDGING_HEADER den Namen Ihrer Header-Datei oder den Pfad dazu ein!

Wenn Sie diesen Schritten folgen, wird Ihre Header-Datei am richtigen Ort erstellt!

: D Hoffe das hilft!

147
Renan Kosicki

In meinem Fall handelte es sich tatsächlich um einen Fehler aufgrund eines Zirkelverweises. Ich hatte eine Klasse in den Bridging-Header importiert und die Header-Datei dieser Klasse importierte 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 das @class deklarativ.

Der Fehler lautete also "Bridging-Header konnte nicht importiert werden", der Fehler darüber lautete <MODULE_NAME>-Swift.h Datei nicht gefunden, darüber war ein Fehler, der auf eine bestimmte Obj-C Header-Datei (nämlich einen View Controller) zeigte.

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

@class MyObject;
66
Daniel Galasko

Finden Sie den Pfad unter:

Build-Einstellungen / Swift Compiler - Codegenerierung / Objective-C Bridging Header

und löschen Sie diese Datei. Dann solltest du in Ordnung sein.

30
variadics

Dies wird wahrscheinlich nur einen kleinen Prozentsatz der Menschen betreffen, aber in meinem Fall verwendete mein Projekt CocoaPods und einer dieser Pods hatte eine Unterspezifikation mit eigenen CocoaPods. Die Lösung bestand darin, Vollwinkelimporte zu verwenden, um auf alle Dateien in den Unter-Pods zu verweisen.

#import <HexColors/HexColor.h>

Eher, als

#import "HexColor.h"
17
Kyle Clegg

Beim Löschen der abgeleiteten Daten ist mir aufgefallen, dass auch beim Auschecken aus einem alten Commit das gleiche Problem auftritt.

Sie erreichen diese Option über Fenster-> Projekte.

15
M.Othman

msgstr "" "Wir müssen Xcode mitteilen, wo wir nach den Header - Dateien suchen sollen werden in unserem Überbrückungsheader aufgeführt . Suchen Sie den Abschnitt Suchpfade, und ändern Sie die Einstellung auf Projektebene für Benutzer Header-Suchpfade , Hinzufügen eines rekursiven Eintrags für das 'Pods'-Verzeichnis: Pods/ ** " http://swiftalicio.us/2014/11/using-cocoapods-from-Swift/

9
G S

Für mich lag es daran, dass ich vergessen habe, es den Build-Einstellungen des Ziels hinzuzufügen.

enter image description here

9
Roland Keesom

Ich habe dieses Problem auch erlebt und leider ist es nur ein Fehler im SDK + Xcode. Ich sprach mit einem Ingenieur bei WWDC über dieses und einige andere Probleme, die ich mit CloudKit hatte. Diese Fehler werden im nächsten Start von Xcode behoben.

Es macht Spaß, Beta-Software zu verwenden.

6
douglas bumby

für andere, die Probleme haben, Swift class in Objective-C-Projekt einzufügen. Das funktioniert für mich:

  1. create NEW Swift file. Dadurch wird xcode zur Eingabeaufforderung gesendet, wenn Sie möchten, dass xcode alle Einstellungen für das Mischen von Swift-Objective-C-Projekten einschließlich brigde-header.h für Sie erstellt. Drücken Sie yes.
  2. fügen Sie jetzt Ihre vorhandenen Swift Dateien hinzu, die Sie in Ihrem Projekt verwenden möchten.
  3. in der Implementierungsdatei verwenden Sie die Swift= class add: #import "YOURPROJECTNAME-Swift.h". Diese Datei xcode create for you. Wenn Ihr xcode-Projekt myProject ist, dann "myProject- Swift.h "

und das ist es. Erstellen Sie jetzt die Swift Klasse in Ihrem Code, als wäre es Objective-C.

3
user1105951

Ich habe in einigen Dateien 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 RIESIGER Fehler

2

Beim Hinzufügen des Frameworks wurde im Zielpfad nicht die Option "Elemente bei Bedarf kopieren" ausgewählt. Fügen Sie das Framework mit dieser Option einfach erneut hinzu.

2
Daisy R.

Fügen Sie Ihrem Projekt eine temporäre Objective-C-Datei hinzu. Sie können ihm einen beliebigen Namen geben.

Wählen Sie Ja aus, um einen Objective-C-Bridging-Header zu konfigurieren.

Löschen Sie die soeben erstellte temporäre Objective-C-Datei.

Fügen Sie in der soeben erstellten Datei projectName-Bridging-Header.h die 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 eine vollständige Probe

2
Atul Kaushik

Diese Art von Fehler trat auf, als ich meiner App eine Heute-Erweiterung hinzufügte. Das Build-Ziel für die Erweiterung wurde mit demselben Namen des Bridging-Headers wie das Build-Ziel meiner App generiert. Dies führte zu dem Fehler, da die Erweiterung die im Überbrückungsheader meiner App aufgelisteten Dateien nicht sieht.

Das einzige, was Sie tun müssen, ist, den Namen des Bridging-Headers für die Erweiterung zu löschen oder zu ändern, und alles wird in Ordnung sein.

Hoffe, dass dies helfen wird.

1

Ich habe das gleiche Problem aus verschiedenen Gründen. Hier ist mein Fall. Ich erstelle ein Projekt, für dessen Aufnahme ein Folienmenü erforderlich ist. Ich verwende SWRevealViewController lib, um dies zu erreichen

wenn ich die Bibliotheksdateien importiere, füge ich einen Unterordner (SWRevealViewController) unter "Unterstützende Dateien für .h && .m-Dateien" hinzu. Es werden zwei Fehler ausgelöst, die Brücke kann nicht importiert werden, und SWRevealViewController.h wird nicht gefunden.

Wie ich es behebe

wenn ich Dateien direkt in Supporting Files (Unterordner löschen) verschiebe, wird SWRevealViewController.m automatisch zu Build Phases -> Compile Sources hinzugefügt und das Problem ist behoben

enter image description here

1
Mina Fawzy

Nach ein paar Tagen des Kampfes gelang es mir schließlich, die Facebook-Anmeldung erfolgreich in meine iOS-App zu integrieren. Hier sind die Schritte (ich gehe davon aus, dass Sie Facebook SDK v4.1 oder höher bereits auf Ihren Computern installiert haben):

  1. Fügen Sie die Facebook-Frameworks - FBSDKCoreKit, FBSDKLoginKit - zu Ihrem Projekt hinzu.
  2. Nehmen Sie keine Änderungen in den Build-Einstellungen vor, da ab FB SDK 4.1 keine Bridging-Header-Dateien mehr benötigt werden.
  3. Importieren Sie das FBSDKCorekit, FBSDKLoginKit in ViewController.Swift-, AppDelegate.Swift-Dateien
  4. Fügen Sie wie erwähnt Informationen in die pList ein hier

  5. Erstellen Sie Ihre App. Und wohoo! Keine Fehler bei der Kompilierung.

1
HITESH AGARWAL

Unter den anderen Fixes trat der Fehler auf, als ich versuchte, Product-> Archive auszuführen. 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.

0
nevster

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

0
abelhoang

Ich habe tatsächlich eine leere OSX Source Objective C-Datei unter dem Projekt erstellt (in der sich alle meine Swift -Dateien befinden).

Ich fügte die Importe hinzu und löschte dann die . M Datei.

0
goggelj

Hatte ein ähnliches Problem, das mit keiner der obigen Lösungen gelöst werden konnte. Mein Projekt verwendet CocoaPods. Ich habe festgestellt, dass ich neben Fehlern eine Warnung mit der folgenden Meldung erhalten habe:

Uncategorized: Target 'Pods' of project 'Pods' was rejected as an implicit dependency for 'Pods.framework' because its architectures 'arm64' didn't contain all required architectures 'armv7 arm64'

enter image description here

Die Lösung war also ganz einfach. Ändern Sie für das Pod-Projekt Nur aktive Architektur erstellen Flag in Nein , und der ursprüngliche Fehler wurde behoben.

0
mike.tihonchik