如何在NSFetchedResultsController中向单个fetchrequest添加两个单独的不相关谓词

时间:2013-12-15 10:24:30

标签: ios objective-c core-data nspredicate nsfetchrequest

我有一个简单的应用程序,它有一个表视图控制器执行基于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,它确实可以。

我应该使用复合谓词吗?如果是,我如何将这些独立谓词串在一起?

1 个答案:

答案 0 :(得分:6)

使用NSCompoundPredicate组合它们。在确定需要时,将每个谓词添加到数组中。然后使用andPredicateWithSubpredicates:orPredicateWithSubpredicates:,具体取决于您是否需要将两个谓词或其中一个谓词应用于所有结果。