[NSPredicate predicateWithFormat] によって作成された式をオブジェクト NSComprasionPredicate、NSExpression などに分解する一般的な方法はありますか?
以下の例では、コンポーネントに分解する必要があります。
[NSPredicate predicateWithFormat:@"(0 != SUBQUERY(collection, $x, $x.name == "Name").@Count)"];
[NSPredicate predicateWithFormat] によって作成された式をオブジェクト NSComprasionPredicate、NSExpression などに分解する一般的な方法はありますか?
以下の例では、コンポーネントに分解する必要があります。
[NSPredicate predicateWithFormat:@"(0 != SUBQUERY(collection, $x, $x.name == "Name").@Count)"];
+[NSPredicate predicateWithFormat:]
実際には、かなり洗練されたパーサーのフロントエンドです。結果の を内省すると、実際にはではなく、または のいずれかNSPredicate
であることがわかります。NSPredicate
NSComparisonPredicate
NSCompoundPredicate
これらのタイプの述語には、便利なイントロスペクションのための便利なメソッドがたくさんあります。
つまりNSPredicate
、実際には「抽象」クラスです。通常は、比較述語または複合述語のみを扱います。など、他の種類もありますNSBlockPredicate
が、それらはすべて文書化されていません。