2014-11-08 5 views
11

Ich habe eine var in einer Swift-Datei definiert sind, aber in einem anderen Objective-C-Datei, wenn ich versuche, diese var zu setzen, die complier beklagt er die var nicht finden können. Wie löse ich dieses Problem? hier ist der Code: in swift:ObjC Code kann nicht Bool finden Variable definiert in schnellen

var isCreating: Bool! 

in objc:

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

dann die complier beschwert: Property 'isCreating' nicht auf Objekt vom Typ

+0

Ist es in einem Rahmenwerk? Hast du mit anderen Funktionen in der Klasse getestet? Wenn es sich in einem Framework befindet, müssen Sie es als öffentlich deklarieren. –

+0

Zu vage. Zeigen Sie die tatsächliche Deklaration in Swift, den tatsächlichen Aufruf in der Objective-C-Datei und die tatsächliche Compiler-Nachricht an. – matt

+0

@chrisco Ich erkläre nie eine "öffentliche" Art von Sache, es scheint, dass Vars oder Vals in Swift-Klasse standardmäßig zugänglich sind, solange Sie das Objekt halten, habe ich recht? – harthoo

Antwort

20

Die 'SelectMemberViewController' gefunden Problem ist, dass nichts in Objective-C's Welt einem Bool! entspricht. Daher ist diese Deklaration nicht Objective-C ausgesetzt. Sie müssen dies als eine einfache Bool deklarieren, wenn Sie möchten, dass Objective-C es sehen kann.

+0

Ja, es löst das Problem, danke, weil Bool in objc ein Primitiv ist, also entspricht es keinem optionalen Typ? – harthoo

+0

Ja. Oder aus der Swift-Terminologie ist es kein AnyObject und nur ein AnyObject kann in ObjectiveC (eine ID) null sein. – matt

+4

var isCreating: Bool = false. Erstes erstes Mal ist es zu beheben. – lee

Verwandte Themen