[Resolu] Sorting d'une array de dictionnaire
Hello,
Je ne sais pas si c'est faisable facilement. J'ai une NSMutableArray arrayOfOperation de NSDictionary.
Le dictionnaire a cette forme :
"date" : NSDate
"operations" : NSArray d'un objet Operation
Est ce que je peux trier l'arrayOfOperation en fonction de la clef date des dictionnaires ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
http://stackoverflow.com/questions/2393386/best-way-to-sort-an-nsarray-of-nsdictionary-objects
La méthode dédiée de NSArray doit s'appeler un truc comme "sortedArrayUsingDescriptors:", ou si c'est un NSMutableArray "sortUsingDescriptors:". Tu lui passes un tableau de NSSortDescriptors mais dans la majorité des cas c'est un tableau avec un seul NSSortDescriptor dedans.
Tain c'est magique ce truc oO
Je ferais juste un commentaire sur l'utilisation de singleton dans ton cas.
ApplicationData, le nom indique que c'est une classe qui gère des données et c'est un singleton en plus. Généralement l'état global mutable est déconseillé et surtout dans le cas d'un singleton. Dans ton cas n'importe quel objet peut ordonner les opérations à sa façon et comme Objective C supporte "l'aliasing" ben c'est le mal absolu.
Théoriquement il n'y a pas d'utilisation concurrente mais oui, c'est vrai que c'est pas super propre.
la concurrent c'est un autre problème .
La c'est juste la mutabilité de la classe qui est accessible par tous les autres objets puisque c'est un singleton même si tout se passe dans le même contexte ( le même thread).
C'est un peu ce que encourage la logique de Swift avec les structures,...
Et si je souhaite que l'array puisse être muté par différents objets ?
Je passerais une copie de array a chaque classe (objet) et il fera ce qui veut de cette array.
Le problème de singleton est que c'est la même référence par tout, donc ta liste d'opération est la même aussi, et avec l'aliasing tu peux te retrouver avec plusieurs objets qui référencent la même instance de liste qui est mutable facilement et partout. Ensuite imagine que ObjetA veut la trier d'une manière ascendante et l'objetB d'une manière descendante ..... ça va surement crée des bugs.
Oui, après la liste ne doit être trier que d'une seule façon à chaque fois.
Si j'ai le temps je changerais en un array non mutable mais la me reste trop de taf !
Ok donc la solution c'est que j'utilise des NSArray, et quand j'en ai besoin j'utilise des NSMutableArray, je travaille dessus et à la fin je change le NSArray du singleton ?