2014-11-08 15 views
11

Mam zmienną zdefiniowaną w jednym pliku Swift, ale w innym pliku Objective-C, kiedy próbuję ustawić ten var, kompilator skarży się, że nie może znaleźć var. Jak rozwiązać ten problem? Oto kod: w SWIFT:Kod objc nie może znaleźć zmiennej Bool zdefiniowanej w swift

var isCreating: Bool! 

w ObjC:

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

wówczas kompilator narzeka: Własność 'isCreating' nie znaleziono obiektu typu 'SelectMemberViewController'

+0

Czy to w ramy? Czy testowałeś z innymi funkcjami w klasie? Jeśli jest w ramce, musisz zadeklarować ją jako publiczną. –

+0

Zbyt ogólnikowe. Pokaż rzeczywistą deklarację w Swift, rzeczywiste wywołanie w pliku Objective-C i aktualny komunikat kompilatora. – matt

+0

@chrisco Nigdy nie deklaruję żadnych rzeczy typu "publicznego", wydaje się, że vary lub vals w klasie swift są domyślnie dostępne tak długo, jak długo trzymasz obiekt, mam rację? – harthoo

Odpowiedz

20

The Problem polega na tym, że nic w świecie Objective-C nie odpowiada Bool!. Tak więc, ta deklaracja nie jest wystawiona na cel C. Trzeba zadeklarować to jako Bool, jeśli chcesz, żeby Objective-C mógł go zobaczyć.

+0

Tak, rozwiązuje problem, dziękuję, czy to dlatego, że Bool w objc jest prymitywny, więc nie odpowiada żadnemu opcjonalnemu typowi? – harthoo

+0

Tak. Lub z terminologii Swift, to nie jest AnyObject i tylko AnyObject może być nieobecny w ObjectiveC (id). – matt

+4

var isCreating: Bool = false. Pierwszy raz to napraw. – lee

Powiązane problemy