我有一个 fetchRequest,它可以正确返回特定键路径的最大值。设置看起来像这样:
NSExpression *keyExpression = [NSExpression expressionForKeyPath:@"distance"];
NSExpression *functionExpression = [NSExpression expressionForFunction:@"max:" arguments:@[keyExpression]];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:keyPath];
[expressionDescription setExpression:functionExpression];
[expressionDescription setExpressionResultType:NSInteger32AttributeType];
问题是我还需要返回与上述 NSExpressionDescription 匹配的对象上的另一个属性的值。换句话说,我想要为从中返回 max: 值的托管对象返回时间戳属性的值。如果我像这样设置获取请求:
NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"record"];
request.resultType = NSDictionaryResultType;
request.propertiesToFetch = @[expressionDescription, @"timestamp"];
request.propertiesToGroupBy = @[@"timestamp"];
它为每个具有时间戳的记录返回一个字典,而不是只为匹配最大值的记录返回一个字典。知道如何才能得到我想要的结果吗?
最佳答案
构造您的获取请求以返回您想要的项目(这可以作为字典或托管对象)。而不是使用 max 表达式,只需将 fetchLimit
设置为 1 并添加排序描述符,以便返回具有 distance
最大值的结果(因为它是第一个)结果集中的项目)。
关于ios - 如何检索与 "max:"表达式匹配的实体的其他属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18140372/