1

[NSPredicate predicateWithFormat] によって作成された式をオブジェクト NSComprasionPredicate、NSExpression などに分解する一般的な方法はありますか?

以下の例では、コンポーネントに分解する必要があります。

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

1 に答える 1

2

+[NSPredicate predicateWithFormat:]実際には、かなり洗練されたパーサーのフロントエンドです。結果の を内省すると、実際にはではなく、または のいずれかNSPredicateであることがわかります。NSPredicateNSComparisonPredicateNSCompoundPredicate

これらのタイプの述語には、便利なイントロスペクションのための便利なメソッドがたくさんあります。

つまりNSPredicate、実際には「抽象」クラスです。通常は、比較述語または複合述語のみを扱います。など、他の種類もありますNSBlockPredicateが、それらはすべて文書化されていません。

于 2010-04-29T22:14:07.427 に答える