Duplicata possible:
Comment trier un NSMutableArray avec des objets personnalisés dedans?
Comment trie-t-on un tableau d'objets en accédant à leurs propriétés NSDate?
Je sais que l'on peut utiliser [mutableArray sortUsingSelector:@selector(compare:)];
sur un tableau de dates, mais comment le faire en accédant à une propriété NSDate sur chaque élément du tableau, en triant les objets par date la plus ancienne à la date la plus récente?
Merci pour toutes les réponses, je suis tombé sur cette réponse qui a résolu mon problème . Vérifiez la réponse de NSGod
Voici le code grâce à l'utilisateur: NSGod:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"startDateTime"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
sortedArrayUsingDescriptors:sortDescriptors];
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
Vous pouvez utiliser:
NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *first = [(Person*)a birthDate];
NSDate *second = [(Person*)b birthDate];
return [first compare:second];
}];
Ou voyez ceci lien
Vous pouvez remplacer la méthode de comparaison dans votre classe personnalisée afin qu'elle compare deux objets de votre classe personnalisée et renvoie le NSComparisonResult approprié en fonction des dates sur les objets.
Par exemple:
-(NSComparisonResult)compare:(YourClass*)otherObject
{
return [self.date compare:otherObject.date];
}
Il existe une méthode appelée -[NSArray sortedArrayUsingComparator:]
. Il faut un bloc dans lequel vous pouvez implémenter toute comparaison que vous jugez appropriée pour vos objets.