0

Sortierung Ich habe ein Wörterbuch, das ich alphabetisch sortieren möchte auf der Grundlage der firstName:NSSortDescriptor nicht alphabetisch

{ 
    id = 123; 
    user =  { 
     firstName = "Test 15"; 
     sex = Male; 
    }; 
}, 
{ 
    id = 23; 
    user =  { 
     firstName = "Test 12"; 
     sex = Male; 
    }; 
} 

ich den folgenden Code versucht zu sortieren:

NSSortDescriptor *sorter = [[NSSortDescriptor alloc] 
             initWithKey:@"user.firstName" 
             ascending:YES 
             selector:@selector(localizedCaseInsensitiveCompare:)]; 

[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]] 

Aber die oben Code scheint nicht zu funktionieren.

Jede Idee, was schief gehen könnte?

Antwort

1

sortedArrayUsingDescriptors: Erstellt ein neues Array, das sortiert und zurückgegeben wird. Sie speichern dieses Array nirgendwo. Das Original ist unberührt und Ihr Code wirft das sortierte Array weg.

Methodenaufrufe werden normalerweise so benannt, dass ihr Name angibt, was sie bewirkt. Wenn Sie ein Array sortieren wollen (das muss veränderbar sein, sonst können Sie es nicht sortieren), gibt es Methoden wie sortUsing ... Etwas wie "sortedArrayUsing ..." gibt ein neues Array zurück. Sie haben ein Array und die Methode gibt Ihnen ein sortiertes Array.

+0

Silly Fehler. Danke vielmals. – Sreejith

0

Das Array bleibt unsortiert, da das sortierte Array nicht gespeichert wird. Hier sind einige Optionen, die Sie

Speichern Sie das sortierte Array in ein neues Array

NSArary *sortedArray = [arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]]; 

Speichern Sie das sortierte Array zu einem neuen änderbaren Array

NSMutableArary *sortedArray = [[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]] mutableCopy]; 

Oder wahrscheinlich, was Sie suchen : Ersetze das unsortierte Array durch das sortierte

arrayToBeSorted = [[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]] mutableCopy];