class MyClass {
var result: Bool
init(result: Bool) {
self.result = result
}
}
我的ArrayController
中有一个通过绑定连接的数组( [MyClass]
(,我需要按属性result
过滤这个数组。
例如,这些对象中有一半结果为 false,我只想显示这些具有 result == true
的项目,但它必须使用 NSPredicate 完成,我不知道如何制作这个谓词,有什么想法吗?
为了清楚起见,我需要使用 NSArrayController
变量filterPredicate
来过滤这个数组。
首先,你的类 MyClass必须符合 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
用户过滤器而不是 NSPredicate
'let filteredArray = yourArray.filter({$0.result == true})'
好的,我自己解决了问题。这是代码
arrayController.filterPredicate = NSPredicate { object, _ in
(object as? MyClass)?.result
}
对于动态变量
dynamic var predicate: NSPredicate? = {
return NSPredicate { object, _ in
(object as? MyClass)?.result
}
}()