ios - 如何检索与 "max:"表达式匹配的实体的其他属性

标签 ios core-data nsfetchrequest nsexpression

我有一个 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/

相关文章:

ios - UiCollectionViewCell 随机图片翻转

ios - 当 UITableViewController 的子类包含在 subview 中时,它不会触发 didSelectRowAtIndexPath,我该如何解决这个问题?

sql - 查询核心数据中的每个第 n 个元素

ios - 无法在标签中显示经文

ios - 在 2 个 VC 之间传输时导航栏背景颜色出现问题

ios - 添加到管理对象有序集

ios - removePersistentStore 和 destroyPersistentStoreAtURL 有什么区别?

objective-c - 排序和过滤核心数据关系的更有效方法是什么?

ios - 我如何在单个获取请求中调用两个 NSPredicate。核心数据 iOS Swift

ios - 如何重新排序显示的获取结果?