2016-08-06 20 views
0

Es gibt viele Fragen zur Verwendung swift code in objective c. Ich hatte ein schnelles Projekt. Es gibt Objectice C-Datei, wo ich Swift-Code verwenden muss.Verwenden Sie Swift-Code in Ziel-C-Datei in Swift-basierten Projekt

Xcode hat ProjectName-Swift.h nicht automatisch erstellt. Also habe ich manuell erstellt und überprüfe die folgenden Dinge.

  1. generiert Schnittstelle Headername: ProjectName-Swift.h

  2. Produktmodulname: myproject

  3. Definiert Modul: YES

  4. Embedded Inhalt Enthält Swift: YES

  5. Installieren Sie Objective-C Kompatibilität Rubrik: YES

  6. hinzufügen @objc in schnellen Klasse

Import UIKit Import SwiftyJSON

@objc Klasse Benutzer: NSObject, NSCoding { }

Dann Import ProjectName-Swift.h in Ziel c-Datei. Aber gibt Fehler Unknown Type name User

ich hinzufügen @class User versucht hatte, es gibt Fehler Vorwärtsreferenzierung mit @class

Wie kann ich dieses Problem beheben erros

+1

Es gibt zwei Header. Du hast sie verwirrt. Sie können den generierten Schnittstellenheader nicht manuell erstellen. Es ist nicht Teil des Projekts. – matt

+0

@matt kannst du bitte mehr erklären. Ich bin immer noch verwirrt –

+1

@SunnyShah, erklärte Apple es bereits sehr einfach, bitte lesen Sie es sorgfältig - https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html –

Antwort

1

Hoffentlich haben Sie bereits das Problem nach dem Lesen der Dokumentation gelöst verwiesen von @AnupamMishra, aber nur für den Fall: Versuchen Sie, die ProjectName-Swift.h Datei aus dem Projekt zu entfernen, die Sie manuell erstellt haben. Es verbirgt die Datei mit dem gleichen Namen, die automatisch von Xcode generiert und nicht in Ihrem Projekt aufgeführt wird. Die Datei befindet sich immer noch irgendwo tief im Verzeichnis DerivedData.

Eine weitere Beobachtung: Sie müssen Objective-c Generated Interface Header Name in Build Settings nicht festlegen. Xcode erzeugt einen Namen und nennt ihn standardmäßig myproject-Swift.h, da myproject Ihr Product Module Name ist.

+0

Ja danke, ich habe es behoben. –