CoreData谓词ANY +与对多关系

我在我的模型中定义了这些实体:

[Sample] - results (to many relation with [Result]) [Parameter] - results (to many relation with [Result]) - compliant (number value) [Result] - parameter (relation with [Parameter]) - sample (relation with [Sample]) 

对于[Sample]对象“MySample”,我需要获取所有具有以下内容的[Parameter]对象:

 [Result].compliant = 1 AND [Result].sample = MySample 

所以,我试图使用谓词来获取[Parameter]对象,谓词将是这些谓词的总和:

 // returns all parameters that have a result compliant value equal to 1: ANY results.compliant = 1 // returns all parameters related with my [Sample] object: ANY results.sample = MySample 

这两个谓词按预期工作,但我想一起使用它,因为我需要获取所有参数与我的[Sample]对象具有结果兼容值等于1。

我曾尝试过这样的事情:

 ANY (results.compliant = 1 AND results.sample = MySample) 

但它给了我“无效的谓词”例外。

我也尝试使用SUBQUERY,但它给了我这些例外:

 Can't have a non-relationship collection element in a subquery 

我想注意到,那个查询:

 ANY results.compliant = 1 AND ANY results.sample = MySample 

是一个有效的查询,但不是我在找什么。

如何用单个谓词来解决这个问题,这个谓词给了我所有的[Parameter]对象有一个[Result]对象和我的[Sample]对象相连并且其值为1。

更新:

使用NSCompoundPredicate不给我预期的结果。 我需要这样的东西:

 ANY (results.compliant = 1 AND results.sample = MySample) 

并使用复合谓词这样工作:

 (ANY results.compliant = 1) AND (ANY results.sample = MySample) 

复合谓词为我提供了一个参数,其结果的符合值等于1,而参数的结果与MySample相关,但我需要的是获取结果与MySample相关的参数,并且符合值等于1条件必须符合一个[Result]对象)。 任何想法如何实现?

更新2:

看来我使用了错误的SUBQUERY,解决scheme是使用像应该使用:-)与SUBQUERY我可以得到正确的结果。

我在手机上input了这个信息,所以可能会出现语法错误,但这是您需要子查询的地方:

 [NSPredicate predicateWithFormat:@"SUBQUERY(results, $r, $r.compliant = 1 AND $r.sample = %@).@count > 0", mySample] 

我会build议使用NSCompoundPredicate。

创build谓词并将它们添加到数组,然后将它们分配为NSCompoundPredicate,如下所示。

 NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:subPredicates];