2011-11-05 4 views
0

Lorsque vous spécifiez plusieurs descripteurs de tri:descripteurs de tri multiples

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:lastName, firstName, age, nil]; 

Say nom, prénom et l'âge sont tous de type NSSortDescriptor et avoir des clés suggérés par leur nom.

Je veux juste comprendre ce qui se passera quand je le ferai. Dire que j'ai quelques données de base (liste de personnes, par exemple) et je le trier en utilisant ces descripteurs de tri. Va-t-il essayer de trier les noms de famille en premier, puis si les noms sont les mêmes, essayez de trier (juste les enregistrements dont le nom est le même) par les prénoms, puis les noms et prénoms sont les mêmes , il essayera de trier (juste pour ces disques) par âge en dernier recours. Ou va-t-il trier la liste par ordre de nom de famille, puis revenir en arrière et trier à nouveau par prénom, puis revenir et trier par âge?

Répondre

6

Il fait ce que vous voulez, le premier. Je doute que la mise en œuvre technique soit telle que vous la décrivez mais le résultat est le même. L'une des manières de réaliser l'implémentation technique consiste à exécuter un tri simple pour chacune d'elles, mais à les exécuter dans l'ordre inverse (tri tertiaire, tri secondaire suivi du tri primaire). Cela aura l'effet net du résultat que vous voulez, et ne nécessite pas que chaque sorte prenne en compte les autres sortes, mais produit le tri sur la clé primaire, sous-ordonnée par la clé secondaire, sous-ordonnée encore une fois par la clé tertiaire. Mais, il peut y avoir des implémentations plus efficaces du genre que la base de données est capable d'employer. La bonne nouvelle, c'est que vous n'avez pas besoin de savoir comment cela fonctionne. :)

+0

Parfait, exactement ce dont j'avais besoin. –

Questions connexes