Erstellen Sie ein NSArray neu, indem Sie Objekte mit übereinstimmenden ID-Nummern gruppieren.

Ich habe ein NSArray und jedes Objekt im Array hat eine groupId und einen Namen. Jedes Objekt ist einzigartig, aber es gibt viele mit derselben groupId. Gibt es eine Möglichkeit, das Array zu zerreißen und neu zu erstellen, sodass die Namen zu einem einzigen Objekt mit der entsprechenden Gruppen-ID zusammengefasst werden? So sieht das Array derzeit aus:

2013-03-12 20:50:05.572 appName[4102:702] the  array:  (
        {
        groupId = 1;
        name = "Dan";
    },
        {
        groupId = 1;
        name = "Matt";
    },
        {
        groupId = 2;
        name = "Steve";
    },
        {
        groupId = 2;
        name = "Mike";
    },
        {
        groupId = 3;
        name = "John";

    },
        {
        groupId = 4;
        name = "Kevin";
    }
)

Ich möchte, dass es so aussieht:

2013-03-12 20:50:05.572 appName[4102:702] the  array:  (
        {
        groupId = 1;
        name1 = "Dan";
        name2 = "Matt";
    },
        {
        groupId = 2;
        name1 = "Steve";
        name2 = "Mike";
    },
        {
        groupId = 3;
        name = "John";

    },
        {
        groupId = 4;
        name = "Kevin";
    }
)

BEARBEITEN: Ich habe versucht und bin mit vielen Versuchen gescheitert, die meisten in etwa so (schlampige Erholung, aber um eine Idee zu geben):

int idNum = 0;
for (NSDictionary *arrObj in tempArr){
    NSString *check1 = [NSString stringWithFormat:@"%@",[arrObj valueForKey:@"groupId"]];
    NSString *check2 = [NSString stringWithFormat:@"%@",[[newDict valueForKey:@"groupId"]];
    if (check1 == check2){
        NSString *nameStr = [NSString stringWithFormat:@"name_%d",idNum];
        [newDict setValue:[arrObj valueForKey:@"name"] forKey:nameStr];
    }
    else {
        [newDict setValue:arrObj forKey:@"object"];
    }
    idNum++;
}  

Antworten auf die Frage(5)

Ihre Antwort auf die Frage