NSPredicate进行2级深入挖掘?

时间:2011-02-18 13:10:46

标签: cocoa core-data

核心数据实体A与实体B具有多对多关系,实体B与实体C具有多对多关系,实体C具有两个属性:类型和值。

A =>> B =>> C (所以:A.Bs.Cs.type,A.Bs.Cs.value)

对于所有具有任何C的B的所有A的NSArray过滤谓词是什么(type =='test1'&& value =='test2')?

我见过的子查询样本只有1级深度。

我也试过[NSCompoundPredicate andPredicateWithSubpredicates:] subpredicate 1)“ANY Bs.Cs.type =='test1'”并且subpredicate 2)“ANY Bs.Cs.value =='test2'”,但没有返回任何内容。

是的,我看过NSPredicate&朋友文档,但找不到任何关于多级下钻的信息。

1 个答案:

答案 0 :(得分:4)

您需要使用NSExpression +expressionForSubquery:usingIteratorVariable:predicate:或其中记录的表达式语法。

我觉得你的情况会像

(SUBQUERY(Bs, $b, 
   SUBQUERY($b.Cs, $c, $c.type=='text1' && $c.value='test2').@count != 0
 ).@count != 0)