我认为不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]];