首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift NSPredicate init.block()绑定示例

问Swift NSPredicate init.block()绑定示例
EN

Stack Overflow用户
提问于 2019-10-31 13:04:39
回答 1查看 224关注 0票数 1

带有块的NSPredicate初始化定义如下:

代码语言:javascript
复制
init(block: @escaping (Any?, [String : Any]?) -> Bool)

但是我无法理解绑定参数的用法,它在签名中以可选字典的形式出现:[String : Any]?。

Apple's documentation,帮不了多少忙。

我能得到一个关于如何在谓词中使用绑定参数的示例吗?例如,对于CoreData搜索?

EN

回答 1

Stack Overflow用户

发布于 2020-06-28 23:14:05

下面是一个例子(没有任何意义,只是为了演示):

代码语言:javascript
复制
let string = "abc"
let templatePredicate = NSPredicate(block: { (object, bindings) in
  return true
})
let ok = templatePredicate.evaluate(with: string, substitutionVariables: ["key": "value"])  

如果在Xcode下执行此代码,并在谓词块中的return true语句处设置断点,则会得到以下结果:

代码语言:javascript
复制
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是一种可重用的谓词,在计算谓词时,通过指定具体的替代变量字典,可以将其应用于各种情况。然后,可以根据需要在块中使用这些替代变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58637173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档