Neuerstellung eines NSArray durch die Gruppierung von Objekten, die entsprechenden id-Nummern?
Ich habe ein NSArray und jedes Objekt in diesem array verfügt über eine Gruppen-id und einen Namen. Jedes Objekt ist einzigartig, aber es gibt viele mit der gleichen Gruppen-id. Gibt es eine Möglichkeit, ich kann reißen Sie das array auseinander und bauen ihn so, dass die Namen werden zu einem Objekt zusammengefasst mit den entsprechenden groubId? Hier ist, was das array aktuell aussieht:
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";
}
)
Dies ist, was ich möchte, dass es so Aussehen:
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, & konnte nicht mit vielen versuchen, die meisten entlang der Linien von so etwas wie dieses (sloppy Erholung, aber um eine Vorstellung 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++;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausgabe:
Dieser fordert ein NSDictionary von NSArrays. Es gibt keine schnelle und elegante Weise - Sie würde einen Bildlauf durch die Quelle.
EDIT: editiert um nicht an den Datentyp des Schlüssels.
NSString *ID = [NSNumber numberWithInt: [o objectForKey: @"groupId"]];
numberWithInt
nimmt eineint
als argument und gibtNSNumber
. Sie bieten eineid
argument und weisenNSString
.Dies ist ähnlich zu Seva Antwort, aber es kann Hinzugefügt werden, als eine Kategorie, die Methode auf NSArray:
Und Sie können es verwenden, etwa so:
Dies ist nicht genau das gleiche wie die original-Antworten, weil es bewahrt die person Wörterbuch, wie die Werte in das array, aber dann können Sie nur Lesen Sie die name-Eigenschaft ab, dass.
Rasche Umsetzung Sergery Antwort für meine Kolleginnen und noobs.
Hinweis: das @ - Zeichen in valueForKeyPath. dass ausgelöst mich ein wenig 🙂
Den code unten neu ein NSArray, indem Sie die Gruppierung von Objekten w.r.t alle übereinstimmenden Schlüssel in jedem Wörterbuch in das array
//Umwandlung von dictionary-array wieder...
Hoffe, es kann helfen..