2017-05-26 3 views
0

Das Projekt, das ich arbeite, hat derzeit Objective-C und Swift mit dem Bridging-Header verbunden und alles funktioniert gut. aber in einem Fall, wo dieser bestimmte ViewController.h, der in Obj-c ist, bereits schnell importiert hat. wenn ich versuche, diese viewController.h in einem anderen Swift-Controller für den Zugriff auf sie sagt ‚< # -Projekt Name #> - swift.h‘ nichtimport swift verknüpfte objc klasse in swift

Leite mich gefunden Datei wie kann ich diese ObjC Datei in schnellen Zugriff :(

Editiert: detaillierte !!

ich eine viewController.h Datei, wo ich rasche Modelle durch den Import durchgeführt habe ‚< # Projektnamen #> - swift.h‘

aber wenn ich versuche, Zugriff auf diese ViewController.h von SecondViewController.swift muss ich hinzufügen #import "viewController.h" zum Überbrückungskopf meines Projektes. Wenn ich das tue, so werde ich diesen Fehler ‚< # Projektnamen #> - swift.h‘ Datei nicht gefunden

+0

Mögliches Duplikat von [So importieren Sie vorhandene Objective C-Klassen in Swift] (https://stackoverflow.com/questions/24034409/how-to-import-existing-objective-c-classes-in-swift) –

+0

Bitte Überprüfen Sie den Link - https://stackoverflow.com/questions/26096402/xcode-myprojectname-bridging-header-h-does-not-exist – Ved

+0

@Ved :: habe meine Frage aktualisiert ... mein Problem ist nicht auf Bridging-Header ..aber Wiederverwendung Objc in Swift, die Bridging Header.h importiert hat importiert !! Bereits – Raghav7890

Antwort

1

Wenn mein Verständnis von dem, was Sie tun, richtig ist, ist das Problem, dass der projectname-Swift.h Kopf ist in einer Kopfzeile enthalten (viewController.h), die wiederum in den Bridging-Header importiert wird.

Die Dokumentation unter https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122 spricht darüber, die generierte *-Swift.h Header in .m Dateien, nicht in den Headern, was darauf hindeutet, dass es nicht in den Kopfzeilen enthalten sein sollte, um zirkuläre Abhängigkeiten zu vermeiden. Sie können immer noch damit davonkommen, es in einen Header aufzunehmen, aber das wird nicht funktionieren, wenn der Header im Bridging-Header enthalten ist.

Ich würde *-Swift.h in viewController.m importieren, nicht viewController.h. Wenn Sie in viewController.h einen Swift-Typ als eine Eigenschaft, Argument oder Rückgabetyp verweisen, können Sie Vorwärtsdeklarationen verwenden, wie

@class MySwiftModelClass; 

Wenn in viewController.h angegebenen Klassen MySwiftModelClass verlängern, dann werden die Dinge ein wenig komplizierter. Bitte poste ein konkreteres kurzes Beispiel, wenn das der Fall ist.

+0

Hey! Danke für die Antwort. ziemlich genau Du hast bekommen, wonach ich gesucht habe ... JA, die Dokumentation von Apple sagt, dass man den Bridging-Header in .m-Datei importieren soll, um zirkuläre Abhängigkeiten zu vermeiden. Ja Meine Klasse erweitert den Swift in .h (meine Header haben einige Methoden, die zurückkommen ein schnelles Modell) – Raghav7890

Verwandte Themen