2015-06-30 27 views
7

我试图使用国际志愿者组织在迅速观察Bool值,并添加dynamic修改如下:布尔属性不能被标记动态的,迅速

dynamic var isRestricted:Bool? 

和编译器说

财产不能标记为动态因为它的类型不可变为 在Objective-C中表示的代码

那么我应该怎么做?我应该改为NSNumber吗?那么观察价值的最佳做法是什么?

即时通讯使用的xcode 7测试2

+0

你试过了:'dynamic var isRestricted = Bool()' –

回答

24

的实际问题是,可选布尔值不能表示在Objective-C (并因此未标记动态)。使用非可选

dynamic var isRestricted : Bool = false 

应该解决问题。

通常,“自选”的概念在Objective-C, 但可选引用的NSObject子类实例不存在被 桥接到在Objective-C可为空的对象指针,所以

dynamic var foo: Foo? 

允许如果(且仅)如果FooNSObject的子类。

+0

的启示!谢谢! –

+1

这是部分正确的。您**可以**具有标记为动态的可选属性,但不包含布尔值或整数。例如,你可以有''var var myObject:MyClass?'' – vomi

+1

@vomi:你完全正确,谢谢你的反馈。我希望现在是正确的。 –