predicateWithBlock: 中块的 bindings 参数是做啥用的?

     2023-03-04     299

关键词:

【中文标题】predicateWithBlock: 中块的 bindings 参数是做啥用的?【英文标题】:What is the bindings parameter for the block in predicateWithBlock: used for?predicateWithBlock: 中块的 bindings 参数是做什么用的? 【发布时间】:2011-09-19 14:10:01 【问题描述】:

+[NSPredicate predicateWithBlock:] 的声明如下所示:

+ (NSPredicate *)predicateWithBlock:(BOOL (^)(id evaluatedObject, NSDictionary *bindings))block

Apple 的关于该块的第二个参数 bindings 的文档说它是:

替换变量字典。字典必须包含接收器中所有变量的键值对。

我不知道为什么需要这个参数——我也没有看到它在任何地方被使用过。为什么会在那里?

另外,当使用带有 -[NSArray filteredArrayUsingPredicate:] 的基于块的谓词时,我是否需要查看 bindings 内部?

【问题讨论】:

这里有一个关于在何处以及如何使用 bindings 参数的示例的答案将非常有用! 【参考方案1】:

查看类文档:

您还可以创建包含变量的谓词,以便 谓词可以在替换具体值之前预先定义 运行。在 Mac OS X v10.4 中,对于使用变量的谓词, 评估是一个两步过程(见 predicateWithSubstitutionVariables: 和 evaluateWithObject:)。在 Mac 中 OS X v10.5 及更高版本,您可以使用 evaluateWithObject:substitutionVariables:,它结合了这些步骤。

然后查看predicate syntax docs。


如果您随后调用evaluateWithObject:substitutionVariables:,则该字典将传递给您的块。这样可以创建相当通用的谓词,其中可以传递结果谓词,并且可以使用一致的替换语言进行评估。

【讨论】:

当你定义一个字符串格式的谓词时,我可以看到替换变量的用处。但是我仍然不明白当您使用predicateWithBlock: 创建谓词时如何使用替换变量。 (一个例子会很棒) 啊,我现在明白你的意思了。此外,在创建谓词以传递给-[NSArray filteredArrayUsingPredicate:] 时是否使用了绑定参数?我的猜测不是。 @JulianF.Weinert 链接不再有效,您还有其他参考资料吗? 对不起,这个互联网有点愚蠢;)web.archive.org/web/20160330070114/http://www.wannabegeek.com/… 当然,archive.org 拥有一切! :D

text铜中块的例子(代码片段)

查看详情

Smarty 模板:如何更改子模板中块的顺序?

】Smarty模板:如何更改子模板中块的顺序?【英文标题】:Smartytemplates:Howtochangetheorderofblocksinchildtemplate?【发布时间】:2015-10-0311:35:51【问题描述】:我想在使用父块的内容时更改子模板中父块的顺序。例子:父模板:blockouterblo... 查看详情

es6中块的概念(代码片段)

ES6中新增了块的概念块:  是个花括号    常用的一些带的地方:1if()2for()3while()4switch()5functionfn() 用了块,产生的变化:1.没有被块包着的函数声明,在全局都能被访问到1console.log(fn);//可以被访问到,是个函数代... 查看详情

NSFetchRequest 和 predicateWithBlock

】NSFetchRequest和predicateWithBlock【英文标题】:NSFetchRequestandpredicateWithBlock【发布时间】:2010-08-2220:22:26【问题描述】:我正在玩一个使用CoreData和NSManagedObjects来填充UITableView的应用程序。我的应用程序中只有一个类,称为Event。我... 查看详情

namenode对数据块的管理

...于块跟副本         hadoop中块是一种逻辑概念而副本才是真正的物理概念,即在DataNode中存储的数据块是以一个叫做的Replica来表示的,而在NameNode中则是以Block来表示。BlockInfo是Block的子类,主要用... 查看详情

namenode对数据块的管理

...于块跟副本         hadoop中块是一种逻辑概念而副本才是真正的物理概念,即在DataNode中存储的数据块是以一个叫做的Replica来表示的,而在NameNode中则是以Block来表示。BlockInfo是Block的子类,主要用... 查看详情

namenode对数据块的管理

...于块跟副本         hadoop中块是一种逻辑概念而副本才是真正的物理概念,即在DataNode中存储的数据块是以一个叫做的Replica来表示的,而在NameNode中则是以Block来表示。BlockInfo是Block的子类,主要用... 查看详情

html元素中块级元素行内元素以及行内块元素整理

块级元素h1-h6>>1-6级标题 p>>段落 div>>定义文档中的节 ul>>定义无序列表 ol>>定义有序列表 li>>定义无序列表与有序列表中的项 hr>>水平线 address>>定义文档作者或拥有者... 查看详情

js中块级作用域

  查看详情

b树索引分裂

...们先来搞清楚什么是索引分裂吧。“索引分裂”就是索引块的分裂,当一次DML事务操作修改了索引块上的数据,但是旧有的索引块没有足够的空间来容纳新修改的数据,那么将分裂出一个新索引块,旧有块的部分数据放到新开辟... 查看详情

了解 objc 中块内存管理的一种极端情况

】了解objc中块内存管理的一种极端情况【英文标题】:Understandoneedgecaseofblockmemorymanagementinobjc【发布时间】:2016-06-1918:11:37【问题描述】:下面的代码会因为EXC_BAD_ACCESS而崩溃typedefvoid(^myBlock)(void);-(void)viewDidLoad[superviewDidLoad];NSArr... 查看详情

html中块级元素设置height:100%的实现

HTML中块级元素设置height:100%的实现当你设置一个页面元素的高度(height)为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果。为什么height:100%不起作用呢?按常理,当我们用CSS的height... 查看详情

计算 HTML5 画布中块箭头的点

】计算HTML5画布中块箭头的点【英文标题】:CalculatethepointsofblockarrowinHTML5canvas【发布时间】:2020-08-2207:52:23【问题描述】:我必须使用HTML5画布生成一个块箭头。对于这个here,我发现很少有很好的答案。但我的要求不同。我必须... 查看详情

一道面试题:静态代码块的执行顺序(代码片段)

先来看一道最常见的面试题:静态代码块的执行顺序?看一下实际运行:classAstaticSystem.out.println("A的静态代码块");System.out.println("A的构造代码块/非静态代码块");publicA()System.out.println("A的构造函数");classBextendsAstaticSystem.out.println("B... 查看详情

如何降低以下代码块的时间复杂度?

】如何降低以下代码块的时间复杂度?【英文标题】:HowcanIreducethetimecomplexityofthefollowingblockofcode?【发布时间】:2019-02-0315:47:05【问题描述】:我正在取1到n位数字并找到可被a或b整除但不能被两者整除的数字计数。我想通过一些... 查看详情

子类继承父类,那么各代码块的执行顺序为:

子类A继承父类B, Aa=newA();则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块执行的先后顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块-... 查看详情

得到k个黑块的最少涂色次数(代码片段)

leetcode2379.得到K个黑块的最少涂色次数给你一个长度为n下标从0开始的字符串blocks,blocks[i]要么是‘W’要么是‘B’,表示第i块的颜色。字符‘W’和‘B’分别表示白色和黑色。给你一个整数k,表示想要连续黑色块的... 查看详情

css中块级格式化上下文(bfc)的特性与应用

一、何为BFC块级格式化上下文(BlockFormattingContext)是网页CSS视觉渲染的一部分,并用于决定盒子的布局。在定位体系中属于常规流(NormalFlow)(另外两种定位体系为浮动(Floats)和绝对定位(AbsolutePositioning))。二、BFC如何形成BFC的形... 查看详情