Wie lassen die sortedArrayUsingSelector die Verwendung von integer zu Sortieren, statt String?
Ich habe einige Daten wie diese :
1, 111, 2, 333, 45, 67, 322, 4445
NSArray *array = [[myData allKeys]sortedArrayUsingSelector: @selector(compare:)];
Wenn ich diesen code ausführen, es sortiert wie diese:
1, 111, 2,322, 333, 4445, 45, 67,
aber eigentlich will ich das:
1, 2, 45, 67, 111, 322, 333, 4445
Wie kann ich das umsetzen? thz u.
Welche Klasse sind die Objekte in der array - NSString oder NSNumber?
es ist NSString... ...Aber ich will nicht zu ändern, zu NSNumber. Es ist, weil es möglicherweise einige Daten wie "1a".... in Zukunft.
Wie funktioniert 1a Art comared mit 1 und 10?
1, 1a, 10.... ...Sortieren Sie zuerst die Rufnummer ein.
es ist NSString... ...Aber ich will nicht zu ändern, zu NSNumber. Es ist, weil es möglicherweise einige Daten wie "1a".... in Zukunft.
Wie funktioniert 1a Art comared mit 1 und 10?
1, 1a, 10.... ...Sortieren Sie zuerst die Rufnummer ein.
InformationsquelleAutor Tattat | 2010-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erweiterung auf Paul Lynch ' s Antwort, hier ein Beispiel habe ich genau dies mit einem Vergleich-Methode als eine Kategorie
NSString
. Dieser code behandelt nur den Fall von zahlen, gefolgt von optionalen, nicht-numerischen Kennzeichner, aber man könnte es verlängern, um Fälle zu behandeln, wie "1a10", etc. wenn das gewünscht ist.Sobald Sie die Kategorie erstellen-Methode, Sie brauchen nur zu tun,
[[myData allKeys]sortedArrayUsingSelector:@selector(psuedoNumericCompare:)];
es ist erstaunlich.ich prüfen Sie es einfach
Toll, ein problem gelöst wurde, für das Alter!
Funktioniert wie einen Charme...toll!
InformationsquelleAutor David Gelhar
Können Sie NSString ist
-[compare:options:]
Funktion und dieNSNumericSearch
option zu vergleichen NSStrings numerisch, ohne Sie zu konvertieren NSIntegers ersten (die sehr teuer sein können, vor allem in längeren Schleifen).Da Sie möchten ein NSArray, die Sie verwenden können, NSSortDescriptor ist
+[sortDescriptorWithKey:ascending:comparator:]
(oder die identische-initWithKey:ascending:comparator:
wenn Sie möchten, eine pre-beibehalten-Objekt) Funktion für block-basierte comparisation wie diese:Sortieren mit dieser Methode geben wird, die gleichen Ergebnisse wie David die Antwort, aber ohne sich mit NSScanner selbst.
InformationsquelleAutor liclac
Umsetzung Ihrer eigenen Methode, die zurückgibt
NSComparisonResult
. Es kann in einer Kategorie, wenn Sie es wünschen.InformationsquelleAutor Paul Lynch
Sortieren und Einfache Lösung..
InformationsquelleAutor Vishal Vaghasiya
David Antwort hat den trick für mich. Für was es Wert ist, möchte ich den Swift 1.0-version die gleiche Antwort.
InformationsquelleAutor Lester