带有块的NSPredicate初始化定义如下:
init(block: @escaping (Any?, [String : Any]?) -> Bool)但是我无法理解绑定参数的用法,它在签名中以可选字典的形式出现:[String : Any]?。
Apple's documentation,帮不了多少忙。
我能得到一个关于如何在谓词中使用绑定参数的示例吗?例如,对于CoreData搜索?
发布于 2020-06-28 23:14:05
下面是一个例子(没有任何意义,只是为了演示):
let string = "abc"
let templatePredicate = NSPredicate(block: { (object, bindings) in
return true
})
let ok = templatePredicate.evaluate(with: string, substitutionVariables: ["key": "value"]) 如果在Xcode下执行此代码,并在谓词块中的return true语句处设置断点,则会得到以下结果:
Printing description of object:
▿ Optional<Any>
- some : abc
Printing description of bindings:
▿ Optional<Dictionary<String, Any>>
▿ some : 1 element
▿ 0 : 2 elements
- key : "key"
- value : "value" 显然,其思想是templatePredicate是一种可重用的谓词,在计算谓词时,通过指定具体的替代变量字典,可以将其应用于各种情况。然后,可以根据需要在块中使用这些替代变量。
https://stackoverflow.com/questions/58637173
复制相似问题