2012-10-16 22 views

risposta

31

Grazie per tutte le risposte, ho trovato questa risposta che ha risolto il mio problema. Check NSGod's answer

Ecco il codice grazie a utente: NSGod:

NSSortDescriptor *dateDescriptor = [NSSortDescriptor 
           sortDescriptorWithKey:@"startDateTime" 
              ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor]; 
NSArray *sortedEventArray = [nodeEventArray 
    sortedArrayUsingDescriptors:sortDescriptors]; 
0

È possibile eseguire l'override del metodo di confronto nella classe personalizzata in modo da confrontare due oggetti della classe personalizzata e restituire il NSComparisonResult appropriato in base alle date sugli oggetti.

Esempio:

-(NSComparisonResult)compare:(YourClass*)otherObject 
{ 
    return [self.date compare:otherObject.date]; 
} 
8

È possibile utilizzare:

NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { 
     NSDate *first = [(Person*)a birthDate]; 
     NSDate *second = [(Person*)b birthDate]; 
     return [first compare:second]; 
    }]; 

O vedere questo link

12
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES]; 
    [mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]]; 
+2

per renderlo leggermente più conciso, si potrebbe scrivere la seconda linea come questa: '[sortUsingDescriptors mutableArray: @ [sortByDate]];' –

+2

Per chiarire un po 'di più (se necessario), 'sortUsingDescriptors:' restituisce l'ordinata 'NSArray'. Probabilmente vorrai assegnarlo a un'altra variabile e prenderlo da lì come fatto su [risposta di Helium3] (http://stackoverflow.com/a/12913805/2192331). –

0

C'è un metodo chiamato -[NSArray sortedArrayUsingComparator:]. Prende un blocco in cui è possibile implementare qualsiasi confronto che si ritenga adatto ai propri oggetti.

Problemi correlati