通过绑定使用 NSPredicate 过滤自定义对象数组

Filtering array of custom objects with NSPredicate via binding

class MyClass {
    var result: Bool

    init(result: Bool) {
        self.result = result
     } 
}

我的 ArrayController 中有一个数组 ([MyClass]) 通过绑定连接,我需要按 属性 result.

过滤此数组

例如,这些对象中有一半的结果为假,我只想显示这些具有 result == true 的项目,但必须使用 NSPredicate 来完成,我不知道如何制作它谓词,有什么想法吗?

为了清楚起见,我需要使用 NSArrayControllerfilterPredicate 变量来过滤此数组。

首先,你的classMyClass必须符合NSObject, 这会将声明变成

class MyClass: NSObject {
var result: Bool
init(result: Bool) {
    self.result = result
 } 
}

然后你可以应用 NSPredicate 作为,

let bPredicate: NSPredicate = NSPredicate(format: "result contains[cd]       %@", true)
let searchArray = yourArray.filtered(using: bPredicate) as NSArray

好的,我自己解决了问题。这是代码

arrayController.filterPredicate = NSPredicate { object, _ in
    (object as? MyClass)?.result
}

对于动态变量

dynamic var predicate: NSPredicate? = {
    return NSPredicate { object, _ in
        (object as? MyClass)?.result
    }
}()

用户过滤器而不是 NSPredicate

'let filteredArray = yourArray.filter({[=10=].result == true})'