首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSPredicateEditor,是否忽略没有搜索词的行?

NSPredicateEditor,是否忽略没有搜索词的行?
EN

Stack Overflow用户
提问于 2010-01-14 02:06:18
回答 2查看 450关注 0票数 1

我马上就会说,我是一个没有经验的Cocoa程序员,如果我的问题在文档中以某种方式得到了回答,而我只是错过了,或者在NSPredicateEditor的工作原理中有一些我不理解的东西,我道歉。然而,我确实尝试了在文档中搜索,并用谷歌搜索了一下,但收效甚微。因此,我把这个问题带给你。

我正在尝试使用NSPredicateEditor筛选基于核心数据的表视图。通过创建一个NSCompoundPredicate,就基于各种条件的行过滤而言,过滤工作得很好。但是,如果谓词编辑器中的某一行的搜索字段中没有文本,则返回的NSPredicate类似于

代码语言:javascript
复制
dataName CONTAINS[cd] ""

...which不匹配任何核心数据记录--这不是我想要的。如果该行中搜索字段为空,基本上我根本不希望它过滤我的数据集。

我的问题是,忽略谓词的这些部分的最简单/最好的解决方案是什么?我最初的想法是用(NSPredicate *)predicateForRow:(NSInteger)row逐行解析NSPredicateEditor值,并自己重新构建谓词,忽略试图匹配""的行,但这似乎不必要地麻烦。用- (NSArray *)subpredicates拆分最终的NSCompoundPredicate并以这种方式编辑它似乎也似乎是我采取了错误的策略。有没有更优雅的方式来做这件事?

*为了清楚起见,我正在考虑编辑谓词的副本,然后将其传递给控制器用于我的表视图,而不是实际编辑当前存储在NSPredicateEditor中的初始谓词。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-14 03:04:16

看起来您应该能够子类化NSPredicateEditor并覆盖predicateForRow: (在NSPredicateEditor的超类NSRuleEditor中声明)并在那里进行替换。基本上,您只需调用super的实现,然后检查谓词,并在必要时返回一个新创建的谓词。

票数 1
EN

Stack Overflow用户

发布于 2010-01-16 07:19:21

我认为布赖恩的想法是正确的,但是雪豹下的NSPredicateEditor不会调用-predicateForRow:来生成它的“谓词”。您需要覆盖更高级别的-predicate方法,但是检查谓词结构并删除与nil或空字符串constantValue的任何比较仍然是相当简单的。

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

https://stackoverflow.com/questions/2059060

复制
相关文章

相似问题

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