Bool 属性 无法在 swift 中标记为动态

Bool Property Cannot be marked dynamic in swift

我正在尝试使用 KVO 观察 swift 中的 Bool 值,并像这样添加 dynamic 修饰符:

dynamic var isRestricted:Bool?

编译器说

Property cannot be marked dynamic because its type canot be represented in Objective-C

那我该怎么办?我应该为此更改为 NSNumber 吗?那么观察价值的最佳实践是什么?

我正在使用 xcode 7 beta 2

实际问题是 optional 布尔值无法表示 在 Objective-C 中(因此未标记为动态)。使用非可选

dynamic var isRestricted : Bool = false

应该可以解决问题。

一般来说,"optionals"的概念在Objective-C中是不存在的, 但是对 NSObject 子类实例的可选引用是 桥接到 Objective-C 中的可为空对象指针,因此

dynamic var foo: Foo?
如果(且仅)如果 FooNSObject 的子类,

是允许的。