objective c - Ordenar la matriz de objetos por su propiedad NSDate
objective-c nsmutablearray (5)
Gracias por todas las respuestas, encontré esta respuesta que resolvió mi problema. Compruebe la respuesta de NSGod
Aquí está el código gracias al usuario: NSGod:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"startDateTime"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
sortedArrayUsingDescriptors:sortDescriptors];
Posible duplicado:
¿Cómo ordenar un NSMutableArray con objetos personalizados en él?
¿Cómo se clasifica una matriz de objetos accediendo a sus propiedades NSDate?
Sé que uno puede usar [mutableArray sortUsingSelector:@selector(compare:)];
en una matriz de fechas, pero ¿cómo se hace al acceder a una propiedad NSDate en cada elemento de la matriz, ordenando los objetos por fecha más antigua a la fecha más reciente?
Hay un método llamado -[NSArray sortedArrayUsingComparator:]
. Toma un bloque en el que puede implementar cualquier comparación que considere adecuada para sus objetos.
Puede anular el método de comparación en su clase personalizada para que compare dos objetos de su clase personalizada y devuelva el NSComparisonResult apropiado de acuerdo con las fechas en los objetos.
P.ej:
-(NSComparisonResult)compare:(YourClass*)otherObject
{
return [self.date compare:otherObject.date];
}
Puedes usar:
NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *first = [(Person*)a birthDate];
NSDate *second = [(Person*)b birthDate];
return [first compare:second];
}];
O vea este enlace
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];