如何分组然后计算NSSet?

时间:2011-01-01 00:42:56

标签: iphone core-data nsset

如何处理核心数据实体中的记录分组然后对其进行计数,以便找到计数最高的组?

我有一个“套装”,其中有许多“腿”,每个“腿”都有一个“赢家”。我想回答的问题是:谁赢得了最多的支持。

帮助表示赞赏。哦,新年快乐!

1 个答案:

答案 0 :(得分:0)

通过集合迭代并计算每个“胜利者”的“腿”。将腿数保存在字典中:

NSMutableDictionary* legCount = [[NSMutableDictionary alloc] init];
NSNumber* count;
for (leg in legsSet) {
    id winner = [leg objectForKey:@"winner"]; // assumes leg is a dictionary
    if (count = [legCount objectForKey:winner]) {
        [legCount setObject:[NSNumber numberWithInt:[count intValue]+1] forKey:winner];
    } else {
        [legCount setObject:[NSNumber numberWithInt:1] forKey:winner];
    }
}

现在你需要找到具有最高值的新词典中的键。

id winner = [[legCount keysSortedByValueUsingComparator:^(id obj1, id obj2) {

    if ([obj1 intValue] > [obj2 intValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }

    if ([obj1 intValue] < [obj2 intValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}] lastObject];