wake-up-neo.com

Xcode erstellt nicht automatisch einen Überbrückungsheader?

Ich importierte eine Obj-C-Datei in mein Swift-Projekt, und Xcode forderte mich automatisch auf, eine Bridging-Header-Datei wie erwartet zu erstellen. Ich habe jedoch beide Dateien gelöscht (in den Papierkorb verschoben), um einige Änderungen vorzunehmen, aber wenn ich versuche, die Obj-C-Datei erneut zu importieren, erscheint die Aufforderung nicht mehr. Was ist der Grund? Ich habe das gleiche Szenario auch in einem anderen Projekt getestet. Es scheint, als lösche ich den automatisch erstellten Bridging-Header von Xcode. Es wird die Aufforderung nicht ein weiteres Mal wieder aufrufen. Warum ist das?

34
John Durand

Der Grund für Ihr Problem ist, dass die Xcode-Build-Einstellungen immer noch den Pfad zur automatisch generierten Bridging-Header-Datei enthalten. Sie können keine Build-Fehler erhalten, da die Header-Datei (ProjectName-Bridging-Header.h) noch in Ihrem Projektverzeichnis vorhanden ist.

Wie zu beheben:

Klicken Sie auf Ihr Projektziel, Wechseln Sie zur Registerkarte Build Settings ( Wählen Sie all anstelle von basic ) und suchen Sie nach Bridging Header. Sie können den durch Xcode generierten Pfadeintrag sehen. Wählen Sie es aus und klicken Sie auf die Schaltfläche "Löschen".

Stellen Sie außerdem sicher, dass die automatisch erzeugte Xcode-Bridging-Headerdatei (ProjectName-Bridging-Header.h) aus Ihrem Xcode-Projektverzeichnis gelöscht wird.

Versuchen Sie nun erneut, die Obj-C-Datei zu importieren. Sie können die Aufforderung zum Erstellen einer Bridging-Header-Datei wie erwartet sehen.

 enter image description here

77
Shamsudheen TK

Datei -> Neue Datei -> Header-Datei

Speichern Sie es als YourApp-Bridging-Header

Gehen Sie dann zu den Build-Einstellungen, suchen Sie nach "Objective-C Bridging Header" (wie zuvor von den Jungs gesagt) und gehen Sie zu Ihrem Bridging-Header wie folgt: YourApp/YourApp-Bridging-Header.h Wo "YourApp /" der Name einer App ist. Es könnte Leerzeichen enthalten, z. B. "Ihre App /".

In meinem Fall in xCode 7.3.1 funktioniert es

19

Es gibt verschiedene Möglichkeiten, Bridging Header in xcode zu erstellen, wie oben erwähnt/vorgeschlagen. Hier würde ich Ihnen den besten und einfachsten Weg zum Erstellen von Bridge geben.

  1. Bild 1 zeigt, dass zum aktuellen Zeitpunkt keine Überbrückung vorliegt.

 Image1

  1. Bild2 zeigt, dass ich einen Ordner kopiert habe, der object-c-Header-Dateien enthält. Nach dem Kopieren erscheint ein Popup auf dem Bildschirm.

 Image2

  1. Image3 zeigt die Popup-Nachricht. Nach dem Drücken der Finish-Taste werden Sie feststellen, dass noch keine Brücke vorhanden ist. als Referenz siehe Bild2.

 Image3

  1. Jetzt in image5 und 6 ziehe ich die Kopfzeile der Objective-c mit Drag & Drop ab. Danach erhalten Sie eine Popup-Nachricht.

 Image4

  1. Nachdem Sie auf die Schaltfläche Fertig stellen geklickt haben, erhalten Sie eine Nachricht wie Möchten Sie einen Objective-C-Bridging-Header konfigurieren?. Nach dem Drücken des Yes-Buttons erhalten Sie Ihren Bridge-Header, den Sie in image5 sehen können.

 Image5

wenn Sie Ihre Kopfzeile in einer Gruppe behalten möchten, verwenden Sie New Group und ziehen Sie Ihre Datei in diese Gruppe. 

 Image6

Erstellen Sie niemals einen Ordner, andernfalls erhalten Sie eine Fehlermeldung.

7
Kumar

schauen Sie unter Ihren Projekteinstellungen nach -> Build-Einstellungen, scrollen Sie zum Abschnitt User-Defined, sehen Sie, ob er einen Schlüssel namens Swift_OBJC_BRIDGING_HEADER hat und ob er einen Wert hat. Wenn dies der Fall ist, werden wahrscheinlich bereits Dateien vorhanden sein. Erstellen Sie in diesem Fall einfach die Datei mit demselben Namen.

4
Fonix
  1. Nur Bridge-Datei Einmal in einem Projekt auffordern.

  2. Wenn Sie die Datei versehentlich löschen, müssen Sie eine neue Bridge-Datei erstellen. Es ist das gleiche.

  3. Gehen Sie zu File->New File->Header File, und der Name sollte YourProjectName-Bridging-Header sein.

3
ronan

Wenn Sie es manuell konfigurieren möchten, wechseln Sie einfach zu den Build-Einstellungen und ändern Sie die Auswahl in ALL unter Basic (Standard) oder Customized.

Da leere Felder ausgeblendet sind, um dem durchschnittlichen Endbenutzer die Arbeit zu erleichtern, haben Sie möglicherweise Schwierigkeiten, den Bridging-Header hinzuzufügen, wenn Sie die Aufforderung zum Hinzufügen des Bridging-Headers verpassen. Die Suchoption enthält auch keine ausgeblendeten Felder. 

Change to All und der Abschnitt Swift Compiler - General sollte mit einer untergeordneten Einstellung von "Objective-C Bridging Header" angezeigt werden

0
Unome