web-dev-qa-db-de.com

Swift "Bridging-Header.h" -Datei, mit der ich keine Objective-C-Klassen in .Swift-Dateien instanziieren kann

Wenn X-Code versucht, einen Überbrückungsheader automatisch zu erstellen, stürzt dieser jedes Mal ab. Daher habe ich die Anweisungen zum manuellen Erstellen eines Überbrückungsheader befolgt. (Erstellen Sie eine .h-Datei, nennen Sie sie <#PROJECT_NAME> -Bridging-Header.h, importieren Sie alle benötigten .h-Dateien?)

Problem ist, wenn ich versuche, eine Klasse in der .Swift-Datei zu instanziieren, die in diesem Header enthalten ist, passiert nichts (es heißt, dass die Klasse nicht existiert) versuchen Sie, sie einzubeziehen, und lassen Sie mich glauben, dass sich etwas nicht richtig verbindet.

Ist jemand darauf gestoßen? Weiß jemand, wie man es behebt?

21
Andy Tsen

Sie müssen es zu den Build-Einstellungen Ihres Ziels hinzufügen:

  1. Wenn Sie in Xcode die Build-Einstellungen für Ihr Ziel aufrufen und ganz nach unten scrollen, finden Sie einen Abschnitt "Swift Compiler - Codegenerierung".

  2. Setzen Sie "Objective-C Bridging Header" auf <#PROJECT_NAME>-Bridging-Header.h

  3. Ich bin mir nicht sicher, ob der richtige Wert für "Objective-C-Kompatibilitätsheader installieren" angegeben ist, aber es ist ein Ja/Nein, sodass Sie dies umschalten können, wenn es zuerst nicht funktioniert.

73
Nate Cook

Ich habe versucht, einen Überbrückungsheader selbst zu erstellen, aber aus irgendeinem Grund hat es Xcode nicht gefallen. Also habe ich meine benutzerdefinierte Datei gelöscht, eine Obj C-Datei importiert und Xcode gefragt, ob ich eine für mich erstellen möchte.

Ich habe ja geklickt und es hat funktioniert!

8
Sean

1) Erstellen Sie eine Datei mit dem Namen "FMDB-Bridging-Header.h"

geben Sie in diese Datei Folgendes ein: #import "FMDB.h"

3) gehe zu Build Settings -> Swift Compiler - Code Generation - füge zu 'Objective-C Bridging Header' hinzu: FMDB-Bridging-Header.h

oder wenn es in einem Ordner in Ihrem Projekt platziert wurde:

Ordnername/FMDB-Bridging-Header.h

4
K.D
  1. Fügen Sie Ihrem Projekt eine Header-Datei mit dem Namen "[Ihr-Projektname] -Bridging-Header.h" hinzu

  1. Gehen Sie zu Build Settings> Build Options und setzen Sie "Embedded Content Contains Swift Code" auf "Yes" enter image description here

  2. Gehen Sie zu Build Settings> Linking und fügen Sie "@ executable_path/Frameworks" zu Runpath Search Paths hinzu enter image description here

Bauen Sie jetzt Ihr Projekt!

1
Furqan Khan

es könnte hilfreich sein, den Namen des Bridging-Headers mit seinem Projektstamm als "MyProject/MyProject-Bridging-Header.h" in den Zeichenfolgenwert des Compiler-Build-Schlüssels Swift 'Objective-C Bridging-Header' zu setzen.

0
Nicola Coppola