根据复选框启用NSArrayController谓词

时间:2016-06-01 00:01:58

标签: cocoa cocoa-bindings nsarraycontroller

根据是否选中了复选框,我有一个静态过滤器来打开/关闭NSArrayController。现在我已将复选框值绑定到此:

private dynamic var filterPending: NSNumber! {
    willSet {
        willChangeValueForKey("filterPredicate")
    }
    didSet {
        didChangeValueForKey("filterPredicate")
    }
}

然后我将NSArrayController的过滤器绑定到:

private dynamic var filterPredicate: NSPredicate? {
    guard let filter = filterPending?.boolValue where filter == true else { return nil }
    return NSPredicate(format: "pending > 0")
}

这似乎运作正常,但感觉我可能会错过一些更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

在您的设置中,filterPredicate 的值取决于 filterPending的值。正如 Gerd K 指出的那样,键值观察 API允许您通过将filterPending注册为dependent key {来enter image description here来指定此类关系{1}}:

filterPredicate