有没有通用的方法将[NSPredicate predicateWithFormat]创建的表达式分解为对象NSComprasionPredicate,NSExpression和其他?
以下示例需要反汇编成组件。
[NSPredicate predicateWithFormat:@"(0 != SUBQUERY(collection, $x, $x.name == "Name").@Count)"];
答案 0 :(得分:2)
+[NSPredicate predicateWithFormat:]
实际上是一个相当复杂的解析器的前端。如果您对结果NSPredicate
进行内省,您会发现它实际上不是NSPredicate
,而是NSComparisonPredicate
或NSCompoundPredicate
。
这两种类型的谓词都有很多方便的内省方法。
换句话说:NSPredicate
实际上是一个“抽象”类。您通常只会处理比较或复合谓词。还有其他类型,例如NSBlockPredicate
,但它们都没有记录。