NSPredicate
ブール述語式の一部でない限り(つまり、「より大きい」などを含む)、このような関数はサポートされていないと思います。
特に例として使用して、いくつかの例を示すこのCoreDataドキュメントを読む必要があります。max
式の説明を作成して使用するには、いくつかの手順に従う必要があります。
NSExpression
まず、関心のある値のキーパスを表し、適用する関数(max:やmin :)を表す式(のインスタンス)を作成する必要があります。
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"salary"];
NSExpression *maxSalaryExpression = [NSExpression expressionForFunction:@"max:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
サポートされている機能の完全なリストについては、を参照してくださいexpressionForFunction:arguments:
。
次に、式の説明を作成し、その名前、式、および結果の種類を設定します。
名前は、辞書で戻り値として使用されるキーです。Employeeテーブルの最大給与と最小給与など、複数の値を取得する場合は、各式の説明の名前が特定のフェッチ要求に対して一意である必要があります。
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"maxSalary"];
[expressionDescription setExpression:maxSalaryExpression];
[expressionDescription setExpressionResultType:NSDecimalAttributeType];
最後に、式で表されるプロパティのみをフェッチするようにリクエストのプロパティを設定します。
[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];