我有一个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:value的managedObject返回timestamp属性的值。如果我设置了这样的获取请求:
NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"record"];
request.resultType = NSDictionaryResultType;
request.propertiesToFetch = @[expressionDescription, @"timestamp"];
request.propertiesToGroupBy = @[@"timestamp"];
它为每个记录返回一个字典,该记录具有时间戳,而不是仅匹配最大值的记录的一个字典。知道我怎么能得到我追求的结果吗?
答案 0 :(得分:1)
构造您的获取请求以返回您想要的项目(这可以是字典或托管对象)。而不是使用max表达式,只需将fetchLimit
设置为1并添加排序描述符,以便返回具有distance
的最大值的结果(因为它是结果集中的第一项)