2016-12-02 2 views
2

Sortierung ich derzeit Parsen meine NSArray durch diesen Codeein NSMutableArray

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES]; 
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]]; 

Und myArray Objekte ist Ep 1 bis Ep 50, unsortiert. Das Problem liegt in der Zahl mit einem einstelligen Wert. Und ich kann kein Präfix 0 hinzufügen, da das Array dynamisch ist und einige Objekte einen Absturz verursachen könnten.

Ich erwarte dies:

Ep 1 Ep 2 Ep 3 ..... Ep 10 Ep 11 Ep 12 Ep 13 .... Ep 20 Ep 21 ...

Aber meine Ausgabe ist diese

EP 1 Ep 10 Ep 11 Ep 12 Ep 13 ..... Ep 2 EP20 Ep 21 Ep 22 .... Ep 3 Ep 30 Ep 31 ......

Nun, wie kann ich es richtig sortieren?

Antwort

3

Sie müssen NSNumericSearch Option mit sortedArrayUsingComparator wie folgt verwenden.

Wenn Ihr Array ein benutzerdefiniertes Objekt enthält.

NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(Episode *ep1, Episode *ep2) { 
    return [ep1.title compare:ep2.title options:NSNumericSearch]; 
}]; 

Wenn Ihr Array NSDictionary enthält.

NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(NSDictionary *dic1, NSDictionary *dic2) { 
    return [(NSString*)[dic1 objectForKey:@"title"] compare:(NSString*)[dic2 objectForKey:@"title"] options:NSNumericSearch]; 
}]; 
+0

Kleiner Fehler: 'obj1.title' =>' ep1.title'. – Larme

+0

@Larme Tippfehler, Danke für die Korrektur :) –

Verwandte Themen