Gruppierung benutzerdefinierter Objekte in Objective-C

Ich habe und Reihe von benutzerdefinierten Objekten der Personenklasse

Person : NSObject{
    NSString *firstName;
    NSString *lastName; 
    NSString *age;
}

NSMutableArray *personsArray = [NSMutableArray array];
Person  *personObj1 =  [[[Person alloc]  init] autorelease];
personObj1.firstName = @"John";
personObj1.lastName = @"Smith";
personObj1.age = @"25";
[personsArray addObject: personObj1];

Person  *personObj2 =  [[[Person alloc]  init] autorelease];
personObj2.firstName = @"John";
personObj2.lastName = @"Paul";
personObj2.age = @"26";
[personsArray addObject: personObj2];

Person  *personObj3 =  [[[Person alloc]  init] autorelease];
personObj3.firstName = @"David";
personObj3.lastName = @"Antony";
personObj3.age = @"30";
[personsArray addObject: personObj3];

Jetzt enthält personsArray 3 Objekte von Personenobjekten.

Können wir diese Objekte nach Attributen wie Alter oder Vorname gruppieren?

Mein erwartetes Ergebnis ist

NSDictionary {
    "John" = >{
        personObj1, //(Its  because personObj1 firstName is John )
        personObj2 //(Its  because personObj2 firstName is John )
    },
    "David" = >{
        personObj3, //(Its  because personObj3 firstName is David )
    },
}

Ich weiß, dass ich dieses Ergebnis erhalten kann, indem ich ein NSDictionary erstelle und dann durch personsArray iteriere. Dann überprüfe ich zuerst jedes

NSMutableDictionary *myDict = [NSMutableDictionary dictionary];

  for (Person *person in personsArray){

    if([myDict objectForKey: person.firstName]){
        NSMutableArray *array = [myDict objectForKey: person.firstName];
        [array addObject:person];
        [myDict setObject: array forKey:person.firstName];
    }else{
        NSMutableArray *array = [NSMutableArray arrayWithObject:person];
        [myDict setObject: array forKey:person.firstName];
    }
    }

    NSLog(@"myDict %@", myDict);

//Result myDict will give the desired output. 

Aber gibt es einen besseren Weg?

Wenn ich benutze@distinctUnionOfObjects Ich kann nur nach Zeichenfolgenobjekten gruppieren (nicht nach benutzerdefinierten Objekten. Stimmt das?).

Vielen Dank für die Antwort im Voraus.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage