通过绑定使用 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 来完成,我不知道如何制作它谓词,有什么想法吗?
为了清楚起见,我需要使用 NSArrayController
的 filterPredicate
变量来过滤此数组。
首先,你的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})'
class MyClass {
var result: Bool
init(result: Bool) {
self.result = result
}
}
我的 ArrayController
中有一个数组 ([MyClass]
) 通过绑定连接,我需要按 属性 result
.
例如,这些对象中有一半的结果为假,我只想显示这些具有 result == true
的项目,但必须使用 NSPredicate 来完成,我不知道如何制作它谓词,有什么想法吗?
为了清楚起见,我需要使用 NSArrayController
的 filterPredicate
变量来过滤此数组。
首先,你的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})'