2012-12-02 20 views
5

Sto facendo qualche piccolo lavoro sull'ordinamento delle stringhe di data in NSMutableArray, sto ricevendo l'array dal db sqlite. Se si stampa l'array sta mostrando come questoCome ordinare NSMutableArray degli oggetti data

stringhe di data sono ( "2011-05-01", "2011-02-01", "2012-01-08", "2012- 05-08" , "2010-01-09 )

voglio indicare le date in ordine crescente. Please help me out ragazzi ..... sono novizio di objc ..

risposta

22

Innanzitutto è necessario convertire tutti gli oggetti di data stringhe (ovvero NSString) in oggetti NSDate e quindi ordinare questi oggetti dateObjects .

Credo che tu abbia dateArray contenente tutte quelle stringhe.

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

O

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

Il formato della data che ha mostrato nella sua domanda si ordinerà correttamente anche come stringhe. –

+0

Non è necessario, può solo sistemare le stringhe come sono adesso. – TheAmateurProgrammer

+0

potresti per favore preferire il codice, se possibile ... – Joker

5

Se le date davvero stringhe nel formato YYYY-mm-dd, come nella sua interrogazione, allora questo sarà ordinarli in ordine crescente:

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

Quello funzionerà anche se le tue date sono effettivamente oggetti NSDate.

Se si desidera creare una copia ordinato dell'array:

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

ordinamento dovrebbe essere fatto, imo, dal database, in generale. sqlite3 supporta order by.

Problemi correlati