2015-06-30 5 views
7

nicht dynamisch markiert Ich versuche Bool Wert in swift mit KVO zu beobachten und dynamic Modifikator wie folgt hinzu:Bool-Eigenschaft kann in schnellen

dynamic var isRestricted:Bool? 

und der Compiler sagen

Eigenschaft kann nicht sein, markiert dynamisch, weil sein Typ kann nicht in Objective-C

dann was soll ich tun? Soll ich zu NSNumber wechseln? und Was ist das beste Verfahren, um Werte zu beobachten?

im mit Xcode 7 Beta 2

+0

haben Sie versucht: 'dynamische var isRestricted = Bool()' –

Antwort

24

Das eigentliche Problem ist, dass optional booleans nicht in Objective-C dargestellt werden (und somit nicht dynamisch markiert). Verwenden Sie ein nicht-optionales

sollte das Problem lösen.

Im Allgemeinen das Konzept der "Optionals" existiert nicht in Objective-C, aber optional Verweise auf Instanzen von NSObject Subklassen sind auf Nullable-Objektzeiger in Objective-C überbrückt, so

dynamic var foo: Foo? 

erlaubt, wenn (und nur) wenn Foo eine Unterklasse von NSObject ist.

+0

Offenbarung! Vielen Dank! –

+1

Es ist teilweise korrekt. Sie ** können ** optionale Eigenschaften haben, die als dynamisch, aber nicht boolesch oder ganzzahlig markiert sind. Zum Beispiel könntest du '' dynamic var myObject: MyClass? '' – vomi

+1

@vomi: Du hast vollkommen recht, danke für die Rückmeldung. Ich hoffe, dass es jetzt richtig ist. –