我马上说我是一个没有经验的 Cocoa 程序员,如果我的问题在文档中以某种方式得到了回答,而我只是错过了它,或者我不明白 NSPredicateEditor 的工作原理,我深表歉意。但是,我确实尝试在文档中搜索并使用 Google 搜索,但收效甚微。因此,我向您提出这个问题。
我正在尝试使用 NSPredicateEditor 过滤基于核心数据的表视图。通过创建 NSCompoundPredicate,过滤工作正常,就基于各种标准的行过滤而言。但是,当谓词编辑器中的一行在其搜索字段中没有文本时,返回的 NSPredicate 类似于
dataName CONTAINS[cd] ""
...不匹配任何核心数据记录——不是我想要的。如果该行中的搜索字段为空白,则基本上我根本不希望它过滤我的数据集。
那么我的问题是,忽略谓词的这些部分的最简单/最佳解决方案是什么?我最初的想法是逐行解析 NSPredicateEditor 值(NSPredicate *)predicateForRow:(NSInteger)row
并自己重建谓词,忽略试图匹配的行""
,但这似乎不必要地麻烦。将最终的 NSCompoundPredicate 拆开- (NSArray *)subpredicates
并以这种方式进行编辑似乎也可能是我采取了错误的策略。有没有更优雅的方法来做到这一点?
*为了清楚起见,我正在考虑编辑谓词的副本,然后将其传递给我的表格视图的控制器,而不是实际编辑当前存储在 NSPredicateEditor 中的初始谓词。