Objective c NSMutablearray与NSDictionary具有相同的值,用于新数组中的键

Objective c NSMutablearray与NSDictionary具有相同的值,用于新数组中的键,objective-c,uitableview,nsmutablearray,nsdictionary,Objective C,Uitableview,Nsmutablearray,Nsdictionary,在我的项目中,我有一个NSMutableArray*arrayMatchs,其中字典作为对象。 在这个字典中,我有一个键,字符串作为数组中字典之间的值。 有一种方法可以创建一个新数组,其中数组内部的对象填充了具有相同键/值的字典 在我的第一个数组(arrayMatchs)下面: arrayMatchs( { “匹配注释可用”=facup; “match_comp_id”=1198;这既不高效也不美观,但我们的想法是循环数组,在运行时构建一个新的数组。对于原始数组中的每一项,您都想知道包含该id的

在我的项目中,我有一个NSMutableArray*arrayMatchs,其中字典作为对象。 在这个字典中,我有一个键,字符串作为数组中字典之间的值。 有一种方法可以创建一个新数组,其中数组内部的对象填充了具有相同键/值的字典

在我的第一个数组(arrayMatchs)下面:

arrayMatchs(
{
“匹配注释可用”=facup;

“match_comp_id”=1198;这既不高效也不美观,但我们的想法是循环数组,在运行时构建一个新的数组。对于原始数组中的每一项,您都想知道包含该id的数组是否已经存在于新数组中。如果存在,则将其添加到该数组中。如果不存在,则将其(在新的可变数组中)添加到答案中。像这样

NSMutableArray *groupedArray = [NSMutableArray array];

for (NSDictionary *d in arrayMatchs) {
    // see if there's a mathing dictionary in the new array
    NSMutableArray *matchingInnerArray;
    for (NSMutableArray *innerArray in groupedArray) {
        NSDictionary *firstDictionary = innerArray[0];
        NSNumber *innerId = firstDictionary[@"match_comp_id"];
        if ([innerId isEqualToNumber:d[@"match_comp_id"]]) {
            matchingInnerArray = innerArray;
            break;
        }
    }
    if (!matchingInnerArray) {
        matchingInnerArray = [NSMutableArray array];
        [groupedArray addObject:matchingInnerArray];
    }
    [matchingInnerArray addObject:d];
}

NSLog(@"%@", groupedArray);

好的,我将尝试你的解决方案,同时我将尝试找到另一种方法来获得相同的结果。目前,由于我缺乏对objective c的经验,我想不出其他任何东西。几乎可以肯定的是,我相信feed的结构可以更好地让程序员的生活更轻松。谢谢你的帮助,如果我能找到更好的方法的话兴佳将分享解决方案。
NSMutableArray *groupedArray = [NSMutableArray array];

for (NSDictionary *d in arrayMatchs) {
    // see if there's a mathing dictionary in the new array
    NSMutableArray *matchingInnerArray;
    for (NSMutableArray *innerArray in groupedArray) {
        NSDictionary *firstDictionary = innerArray[0];
        NSNumber *innerId = firstDictionary[@"match_comp_id"];
        if ([innerId isEqualToNumber:d[@"match_comp_id"]]) {
            matchingInnerArray = innerArray;
            break;
        }
    }
    if (!matchingInnerArray) {
        matchingInnerArray = [NSMutableArray array];
        [groupedArray addObject:matchingInnerArray];
    }
    [matchingInnerArray addObject:d];
}

NSLog(@"%@", groupedArray);