我有一个简单的应用程序,它有一个表视图控制器执行基于fetchRequest的NSFetchedResultsController,而我的fetchRequest有,或者需要有两个完全独立的独立谓词。
一个用于在searchBar中搜索,一个用于在实际表视图中显示信息。
当我同时活动时,只有一个有效。
这是谓词:
if ([self.personSearchBar.text length] > 0)
{
NSPredicate *personPredicate = [NSPredicate predicateWithFormat:@"ANY name CONTAINS[c] %@", self.personSearchBar.text];
[fetchRequest setPredicate:personPredicate];
}
NSPredicate *p = [NSPredicate predicateWithFormat:@"transactions.whoBy.@count !=0"];
[fetchRequest setPredicate:p];
正如你所看到的,有两个独立的谓词,但都需要处于活动状态并正常工作,因为现在处于这种状态,搜索实际上并不起作用,但如果我注释掉NSPredicate * p,它确实可以。
我应该使用复合谓词吗?如果是,我如何将这些独立谓词串在一起?
答案 0 :(得分:6)
使用NSCompoundPredicate
组合它们。在确定需要时,将每个谓词添加到数组中。然后使用andPredicateWithSubpredicates:
或orPredicateWithSubpredicates:
,具体取决于您是否需要将两个谓词或其中一个谓词应用于所有结果。