Tri en sens descending dans un simple Array ?
Eddy58
Membre
J'ai un simple array avec des strings dedans, j'utilise la méthode de tri sortedArrayUsingSelector mais, curieusement, le tri n'est proposé qu'en mode ascending, hors j'ai aussi besoin du descending, comment faire ? ???
[tt]
resultArray=[monArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare];
[/tt]
[tt]
resultArray=[monArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare];
[/tt]
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc de trois choses l'une :
 -soit tu tries puis tu renverses ton tableau
 -soit tu écris un nouveau sélector qui fait un caseInsensitiveCompare et inverse les resultats (par exemple dans une catégorie de NSString) :
 -soit tu utilises le tri par NSSortDescriptor, mais dans ce cas je ne vois pas trop comment faire (je saurais avec un tableau de dicos, mais pas un tableau de chaà®nes)
Pour ceux qui veulent découvrir les "catégories" en Objective-C, voici l'exemple de la solution 2 :
+
Chacha
[edit]
Pour la solution 3 :
[/edit]
Ce n'est pas en effet pas possible, car pour utiliser les NSSortDescriptor, la classe des objets à trier doit être KVC (enfin, pas tout à fait, la seule méthode utilisée est -valueForKey:), et ce n'est pas le cas de NSString.
[EDIT] Je retire ce que j'ai dit, bien joué Chacha (oups un smiley)
Juste un petit détail, [tt]NSOrderdAscending[/tt], [tt]NSOrderedSame[/tt] et [tt]NSOrderedDescending[/tt] valent respectivement -1, 0 et 1. Il est donc possible de simplifier ton code comme suit:
[tt]return -1*[self caseInsensitiveCompare:string];[/tt]
Si si, j'ai réussi, regarde dans le [edit][/edit] l'astuce dont je ne suis pas peu fier !
[EDIT]
Ah ben tiens, on s'envoie des [edit] de partout, on dirait
[/EDIT]
Honnêtement, je préfère que le compilo m'optimise ça. Non seulement il trouvera la forme qui ira le plus vite, mais en plus on est peinard si les valeurs changent un jour. Mais oui, ta formule est (largement) plus simple à écrire.
+
Chacha
[edit]Allez, j'augmente la difficulté du concours[/edit]
[edit Renaud]ça ne se fait pas de brouiller les pistes comme ça...[/edit Renaud]
[edit]Pour départager les gens, sur la fin... non ?[/edit]
Bon de toute façon, il y a encore plus simple:
[tt]return [string caseInsensitiveCompare:self];[/tt]
Je pense réellement que oui (et d'après la suite, il est même plus intelligent que moi
Euh... alors là chapeau ! Oui, ça me paraà®t la bonne façon. Je vais de suite corriger mon premier post. C'est bien, de réfléchir à plusieurs, quand même !
+
Chacha
[edit]Allez, j'augmente la difficulté du concours[/edit]
[edit]Avant de penser à départager les gens, il faut d'abord des candidatures [/edit]
Le coup de la catégorie, super, je pensais l'implémenter, mais j'ai vu que Chacha a trouvé le truc avec NSSortDescriptor (bien vu le "self" en key !!), et ça marche impeccable, en plus ça sert pour les deux sens de tri.
Très instructif.
çà c'est du déterrage !!! ;D
La magie de la fonction recherche. :P
Ah, Dieu, je suis le pire mathématiques, maths et je l'ai mal à la tête, je ne peux pas vous aider.
Pour un premier post, tu fais fort ! C'est pour dire çà que tu re-déterre ce vieux post ?! ???