objective-c nsmutablearray nsdate sorting

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]];