2014-11-08 11 views
11

Ho una var definita in un file Swift, ma in un altro file Objective-C, quando provo a impostare questa var, il compilatore si lamenta di non riuscire a trovare la var. Come risolvo questo problema? ecco il codice: in rapida:Il codice Objc non trova la variabile Bool definita in swift

var isCreating: Bool! 

in objc:

SelectMemberViewController *ctrl = [[SelectMemberViewController alloc]init]; 
ctrl.isCreating = YES 

poi il compilatore si lamenta: Proprietà 'isCreating' non trovato in oggetto di tipo 'SelectMemberViewController'

+0

È in un quadro? Hai provato con altre funzioni sulla classe? Se è in un framework, sarà necessario dichiararlo come pubblico. –

+0

Troppo vago. Mostra la dichiarazione effettiva in Swift, la chiamata effettiva nel file Objective-C e il messaggio effettivo del compilatore. – matt

+0

@chrisco Non ho mai dichiarato alcun tipo di "pubblico", sembra che vars o vals in swift class siano accessibili di default finché si tiene premuto l'oggetto, vero? – harthoo

risposta

20

Il il problema è che nulla nel mondo di Objective-C corrisponde a un Bool!. Pertanto, questa dichiarazione non è esposta all'obiettivo-C. Devi dichiarare questo semplicemente Bool se vuoi che Objective-C sia in grado di vederlo.

+0

Sì, risolve il problema, grazie, è perché Bool in objc è una primitiva, quindi non corrisponde a nessun tipo facoltativo? – harthoo

+0

Sì. O dalla terminologia di Swift, non è un oggetto AnyObject e solo un oggetto AnyObject può essere nullo in ObjectiveC (un id). – matt

+4

var isCreating: Bool = false. La prima volta è la prima volta. – lee

Problemi correlati