2015-01-30 12 views
8

Sto provando a utilizzare la classe Swift nel mio file Objective-C. Ho incluso "moduleName-Swift.h" di file nel mio file SuperViewController.m, ma quando provo a dichiarare un metodo pubblico in SuperViewController.h con Swift-class come parametro del metodo, ovviamente ottengo un errore: "Expected a type"ogg-c - Le classi Swift non sono visibili nel file Objective-C .h

Come posso usare swift-class in un file di intestazione se posso includere solo projectModule-Swift.h nei file .m ??

+0

penso che si può impostare @objc davanti al nome della classe veloce: (a) MyModel classe objc: NSObject {..} – Eyeball

+0

Sì, ho fatto che , la classe è perfettamente visibile nel file .m, ma non nel file .h. – Oleg

+0

Nel tuo h-file usa @class myModel sotto le tue importazioni? – Eyeball

risposta

13

Assicuratevi di mettere @objc prima del nome della classe rapido.

@objc myclassname { ... } 

aggiungere anche

@class myclassname; 

nel vostro obj-c file di intestazione in cui si desidera accedere alla classe rapida

+5

con @ class I get 'Receiver' XY 'per il messaggio di classe è una dichiarazione forward –

+0

Ciao @Eyeball, sai come accedere a Bool & Int Properties pure?! –

1

Ho avuto lo stesso problema. L'aggiunta di @Class MyClassName nel file obj-c .h ha creato il messaggio "Destinatario" MyClassName "per la classe messaggio è una" forward ", quindi l'ho eliminato e SOLAMENTE ho aggiunto" @objc "prima del nome della classe swift, MA ho avuto anche per assicurarsi che la classe swift sia una sottoclasse di NSObject.

@objc class MySwiftClass:NSObject { ... } 

SENZA @class MyClassName in obj-c .h di file!

0

ho dovuto usare:

@obj public class MySwiftClass: NSObject { ... }

Problemi correlati