it-swarm.com.de

Xcode MyProjectName-Bridging-Header.h ist nicht vorhanden

Ich möchte Swift in meinem Objective-C-Projekt einsetzen. Also habe ich eine Swift-Klasse hinzugefügt:

import Foundation
@objc class System : NSObject {
    @objc func printSome() {
        println("Print line System");
    }
}

Und importierte es in eine .m-Datei:

#import "MyProjectName-Swift.h"

Beim Erstellen meines Projekts bekomme ich die folgende Fehlermeldung:

Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist

HINWEIS: Unter "Build-Einstellungen -> Swift-Compiler - Codegenerierung -> Objective-C Briding-Header" ist "MyProjectName-Bridging-Header.h" festgelegt

Was soll ich tun, um dieses Problem zu lösen?

Jede Hilfe wird sehr geschätzt.

EDIT: Bridging-Header-Datei: #ifefiniert (__ has_include) && __has_include () # include #endif

#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#if defined(__has_include) && __has_include(<uchar.h>)
# include <uchar.h>
#Elif __cplusplus < 201103L
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
#endif
#if !defined(Swift_PASTE)
# define Swift_PASTE_HELPER(x, y) x##y
# define Swift_PASTE(x, y) Swift_PASTE_HELPER(x, y)
#endif
#if !defined(Swift_METATYPE)
# define Swift_METATYPE(X) Class
#endif

#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
# define Swift_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define Swift_RUNTIME_NAME(X)
#endif
#if !defined(Swift_CLASS_EXTRA)
# define Swift_CLASS_EXTRA
#endif
#if !defined(Swift_PROTOCOL_EXTRA)
# define Swift_PROTOCOL_EXTRA
#endif
#if !defined(Swift_CLASS)
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 
#  define Swift_CLASS(Swift_NAME) Swift_RUNTIME_NAME(Swift_NAME) __attribute__((objc_subclassing_restricted)) Swift_CLASS_EXTRA
# else
#  define Swift_CLASS(Swift_NAME) Swift_RUNTIME_NAME(Swift_NAME) Swift_CLASS_EXTRA
# endif
#endif

#if !defined(Swift_PROTOCOL)
# define Swift_PROTOCOL(Swift_NAME) Swift_RUNTIME_NAME(Swift_NAME) Swift_PROTOCOL_EXTRA
#endif

#if !defined(Swift_EXTENSION)
# define Swift_EXTENSION(M) Swift_PASTE(M##_Swift_, __LINE__)
#endif

#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"

#if defined(__has_feature) && __has_feature(modules)
#endif

#pragma clang diagnostic pop
100
user2408952

Wenn die Bridging-Datei auf derselben Ebene wie die anderen Klassen erstellt wird, müssen Sie möglicherweise den relativen Pfad hinzufügen, wie diese Bilder zeigen. Beachten Sie hierbei, dass die Bridging-Datei auf derselben Ebene wie die anderen Klassen erstellt wird: enter image description here

Ich habe den Namen in den Build-Einstellungen korrekt eingegeben.enter image description here

aber der Compiler kann die Datei nicht finden.enter image description here

Wenn ich also den relativen Pfad aus dem Stamm des Projekts hinzufüge (dh ./ProjectName/BridgerFileName.h), füge ich .__ hinzu.enter image description here

jetzt kompiliert es und ich kann eine Methode in meiner Objective C-Klasse aufrufen: enter image description here

170
James Toomey

Ich habe festgestellt, dass nach dem manuellen Erstellen der Überbrückungsheaderdatei und dem Auswählen des Standardnamens und -orts der Überbrückungsheader im Projektverzeichnis abgelegt wird, das sich unter dem Stammverzeichnis befindet. 

Dies erfordert den folgenden Wert für die Einstellung: Ziele> [Ihr App-Ziel]> Erstellungseinstellungen> Swift Compiler - Codegenerierung> Objective-C Bridging-Header :

$(SRCROOT)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h 

Wenn Ihr Projekt ein Swift-Modul (Framework) ist, können Sie, wie in den Kommentaren ausgeführt, Folgendes vorziehen:

$(SRCROOT)/$(PROJECT_NAME)/$(Swift_MODULE_NAME)-Bridging-Header.h
67
DonVaughn

Für diejenigen, die den Bridging-Header entfernen

Ich ging den umgekehrten Weg wie die meisten anderen Antworten hier. Ich hatte vorher einen Bridging-Header verwendet, brauchte ihn aber nicht mehr. Nachdem ich es aus meinem Projekt gelöscht hatte, bekam ich den in der Frage genannten Fehler. Ich habe die folgenden Schritte ausgeführt, um mein Problem zu lösen.

  1. Gehen Sie zu Targets> [Ihr App-Ziel]> Build-Einstellungen> Swift-Compiler - Allgemein> Objective-C Bridging-Header und löschen Sie den Pfad. (Dank an @Donamite für die Idee.) (Sie können einfach "brücken" in das Suchfeld eingeben, um sie zu finden.)
  2. Löschen Sie das abgeleitete Datum. Gehen Sie zu Xcode> Voreinstellungen> Standorte und klicken Sie auf den grauen Pfeil neben dem Ordner Abgeleitete Daten. Dann löschen Sie Ihren Projektordner.

 enter image description here

42
Suragch

Bridge-Datei in Swift-Projekt hinzufügen.

Schritt 1. Gehen Sie zu Datei> Kakao hinzufügen mit Objective-C-Datei (für temporäre Zwecke).

 enter image description here

Schritt 2. Danach erscheint das folgende Popup  enter image description here

Klicken Sie nun auf die Schaltfläche "Bridging-Header erstellen"

ERLEDIGT
SIE ERHALTEN BRIGDE-DATEI IM BÜNDEL
VIELEN DANK

13

Dies sind Schritte zum Erstellen eines Bridging-Headers.

  1. Datei-> Neu-> iOS-> Header-Datei , Geben Sie den Namen der Überbrückungsdatei wie "IhrProjektname-Bridging-Header.h" an.

  2. Build-Settings-> Objective-C Bridging-Header , Gib einfach den Namen des Bridging-Header-Dateinamens wie "ProjectName-Bridging-Header.h"

    HINWEIS: Die Bridging-Headerdatei sollte sich im Hauptverzeichnis des Projekts befinden, in dem sich die Datei ".xcodeproj" befindet. Wenn nicht, verschieben Sie die Bridging-Headerdatei in den Stammordner des Projekts. Auf diese Weise kann Xcode auf die Bridge-Datei zugreifen.

  3. Erstellen Sie das Projekt und importieren Sie die erforderlichen Dateien in den Bridging-Header.

12
Vishnuvardhan

Für mich half es, $ (SRCROOT)/$ (PROJECT_NAME)/vor meinem Bridging-Header-Dateipfad zu verwenden

12

In Swift 4.1

ihr Projekt hat keine bridging-Header.h-Datei, aber Ihr Projekt hat diesen Pfad. Dafür müssen Sie diesen Pfad löschen ...

Wechseln Sie zur Zieldatei und wählen Sie Build Settings (Einstellungen erstellen), ----> Swift Compiler - General (Allgemein), und löschen Sie die Datei bridging-Header.h. Folgen Sie den Screenshots ....  enter image description here

Löschen Sie die Datei bridging-Header.h in Swift Compiler - General

 enter image description here

Jetzt hast du so ...

 enter image description here

11
iOS

Für mich war es hilfreich, $(SRCROOT) vor meinem Objective-C-Bridging-Headerpfad zu verwenden.

$(SRCROOT)/swiftLibraries/swiftLibraries-Bridging-Header.h
6
Antoine

Folgendes hat für mich gearbeitet:

  1. Die Bridging-Header-Datei sollte sich im Hauptverzeichnis des Projekts befinden, in dem sich die Datei ".xcodeproj" befindet. Bewegen Sie sich in das Projektverzeichnis und ziehen Sie den Bridging-Header in das Stammverzeichnis, wenn sich dieser in einem anderen Ordner befindet.
  2. Rechtschreibfehler im Header-Namen korrigieren.
  3. Löschen Sie abgeleitete Daten
  4. Ziel -> Build-Einstellungen -> Swift-Compiler: Allgemein -> Obj C-Headername hinzufügen.
  5. Reinigen und wieder laufen.
5
A.G

Folgen Sie den unteren Schritten:

  1. Löschen Sie die Bridging-Header-Datei. . . (Vielleicht erstellen Sie manuell) und;
  2. Erstellen Sie eine neue Swift-Datei in Objective-C-Projekt. . . (Nicht importieren, zuerst erstellen)

Vielleicht helfen diese beiden Dinge bei der Lösung Ihres Problems.

5
iHart

Bridging-Header-Datei manuell erstellen 

Löschen Sie zunächst die Bridging-Header-Datei, in der Xcode erstellt wird. Und wählen Sie Ihr Projekt> Build-Einstellungen> Suchen Sie nach dem Stichwort. Swift Compiler - Codegenerierung. Klicken Sie auf Objective-C Bridging Header, löschen Sie diesen Pfad. Reinigen Sie jetzt Ihr Projekt.

Wählen Sie nun Ihr Projekt> Fenster in der Navigationsleiste aus. Wählen Sie Projekte aus und löschen Sie Ihre abgeleiteten Daten von dort.

Erstellen Sie nun eine neue Datei, wählen Sie Source und dann die Header-Datei aus, und erstellen Sie Ihre Bridging-Header-Datei. Dateiname muss Ihr Projektname-Bridging-Header.h sein und dann erstellen

Wählen Sie Ihr Projekt> Build-Einstellungen> Stichwort suchen. Swift Compiler - Codegenerierung. Klicken Sie auf Objective-C Bridging-Header und fügen Sie nun den Pfad in diesem Objective-C-Bridging-Header wie projectname-Bridging-Header.h hinzu. 

Importieren Sie nun Ihre Klassen in die Bridging-Header-Datei, und Sie können Ihren Code leicht kompilieren.

Ihre Bridging-Header-Datei sieht folgendermaßen aus, wenn Sie Ihre Datei manuell erstellen.

2
Mandeep Singh

Was mir geholfen hat, war, die Datei manuell in den in einer Fehlermeldung genannten Pfad zu verschieben. So:

  1. Ich habe die Datei gelöscht (in den Papierkorb verschoben) 
  2. Es wurde in einer Fehlermeldung aus dem Papierkorb in den Pfad verschoben 
  3. Später musste ich auch das Projekt reinigen
0
jreft56