1

是否有任何常用方法将 [NSPredicate predicateWithFormat] 创建的表达式分解为对象 NSComprasionPredicate、NSExpression 和其他对象?

对于下面的示例需要拆卸成组件。

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

1 回答 1

2

+[NSPredicate predicateWithFormat:]实际上是一个相当复杂的解析器的前端。如果你反省结果NSPredicate,你会发现它实际上不是一个NSPredicate,而是一个NSComparisonPredicate或一个NSCompoundPredicate

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

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

于 2010-04-29T22:14:07.427 回答