首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >predicateWithBlock:中块的绑定参数是用来做什么的?

predicateWithBlock:中块的绑定参数是用来做什么的?
EN

Stack Overflow用户
提问于 2011-09-19 22:10:02
回答 1查看 5.4K关注 0票数 21

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

代码语言:javascript
复制
+ (NSPredicate *)predicateWithBlock:(BOOL (^)(id evaluatedObject, NSDictionary *bindings))block

苹果公司关于代码块的第二个参数bindings的文档中写道:

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

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

另外,在-[NSArray filteredArrayUsingPredicate:]中使用基于块的谓词时,是否需要查看bindings内部

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-20 01:50:02

请参阅类文档:

您还可以创建包含变量的谓词,以便可以在运行时替换具体值之前预定义谓词。在MacOSXv10.4中,对于使用变量的谓词,求值是一个两步的过程(请参阅predicateWithSubstitutionVariables:和evaluateWithObject:)。在MacOSXv10.5和更高版本中,您可以使用evaluateWithObject:substitutionVariables:,它组合了这些步骤。

然后查看predicate syntax docs

如果您随后调用evaluateWithObject:substitutionVariables:,则该字典将被传递到您的块。这实现了相当通用的谓词创建,其中结果谓词可以传递,并且可以使用一致的替代语言进行计算。

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

https://stackoverflow.com/questions/7472281

复制
相关文章

相似问题

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