web-dev-qa-db-fra.com

Trier le tableau d'objets par leur propriété NSDate

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?

29
system

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];
34
jarryd
    NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
    [mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
14
Thomas

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

10
Daniel

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];
}
1
Samhan Salahuddin

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.

1
waldrumpus