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

ami*_*jaj 2 core-data objective-c nspredicate nsfetchrequest ios

我有一个简单的应用程序,它有一个表视图控制器执行基于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];
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,有两个独立的谓词,但两者都需要处于活动状态并正常工作,因为现在处于这种状态,搜索实际上并不起作用,但如果我注释掉NSPredicate*p,它就会.

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

Wai*_*ain 6

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