如何将NSPredicate分解为组件?

时间:2010-04-23 13:10:10

标签: iphone core-data nspredicate

有没有通用的方法将[NSPredicate predicateWithFormat]创建的表达式分解为对象NSComprasionPredicate,NSExpression和其他?

以下示例需要反汇编成组件。

[NSPredicate predicateWithFormat:@"(0 != SUBQUERY(collection, $x, $x.name == "Name").@Count)"];

1 个答案:

答案 0 :(得分:2)

+[NSPredicate predicateWithFormat:]实际上是一个相当复杂的解析器的前端。如果您对结果NSPredicate进行内省,您会发现它实际上不是NSPredicate,而是NSComparisonPredicateNSCompoundPredicate

这两种类型的谓词都有很多方便的内省方法。

换句话说:NSPredicate实际上是一个“抽象”类。您通常只会处理比较或复合谓词。还有其他类型,例如NSBlockPredicate,但它们都没有记录。