2012-12-02 38 views
5

Ich mache ein wenig Arbeit zum Sortieren der Datumszeichenfolgen im NSMutableArray, ich bekomme das Array von der SQLite db. Wenn Sie das Array drucken es soSo sortieren Sie NSMutableArray von Datum-Objekten

Datum Strings zeigt sind ( "2011-05-01", "2011-02-01", "2012-01-08", „2012- 05-08" , „2010-01-09 )

ich die Daten in aufsteigender Reihenfolge angezeigt werden soll. Bitte helfen Sie mir Jungen ..... ich bin Neuling auf ObjC ..

Antwort

22

Zuerst sollten Sie alle Datums-Strings (also NSString) Objekte in NSDate Objekte konvertieren und diese dann sortieren dateObjects .

Ich glaube, Sie haben dateArray enthält alle diese Zeichenfolgen.

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" 
                  ascending:NO]; 
NSArray *descriptors = [NSArray arrayWithObject:descriptor]; 
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors]; 

ODER

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
             ^(id obj1, id obj2) { 
              return [obj2 compare:obj1]; 
             }]; 
+0

Das Datumsformat, das er in seiner Frage zeigte, wird auch als Zeichenfolgen korrekt sortiert. –

+0

Das ist unnötig, er kann die Saiten einfach so arrangieren, wie sie gerade sind. – TheAmateurProgrammer

+0

Könnten Sie bitte den Code bevorzugen, wenn möglich ... – Joker

5

Wenn Ihre Termine sind wirklich Strings im Format YYYY-mm-dd, wie es in Ihrer Frage, dann wird dies sie in aufsteigender Reihenfolge sortieren:

[arrayOfDates sortUsingSelector:@selector(compare:)]; 

That funktioniert auch, wenn Ihre Daten tatsächlich NSDate Objekte sind.

Wenn Sie eine sortierte Kopie des Arrays zu erstellen:

NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)]; 
1

Sortierung sollte imo erfolgen, die von der Datenbank, im Allgemeinen. sqlite3 unterstützt order by.

Verwandte Themen