Je comprends que la bonne façon de trier un NSDictionary est de créer un tableau à partir des clés, de trier le tableau, puis d'énumérer le tableau et d'opérer sur le NSDictionary à partir de là. Ma question est, pour un NSDictionary * dict, avec les touches et les valeurs des chaînes,Pourquoi NSDictionary est-il alphabétique en mémoire, mais pas en énumération?
Pourquoi cette alphabétique:
NSLog(@"%@", dict);
Mais ce n'est pas:
for (NSString *w in dict)
{
NSLog(@"%@", w);
}
... semble étrange Est-ce que je fais quelque chose de mal?
Merci d'avance.
Ah, c'est logique. Je n'ai pas pensé au% @ de NSLog pour faire le tri. Merci! – iBuys
I.e. les dictatures sont intrinsèquement non ordonnées. – bbum
Un dictionnaire est juste une interface pour une collection qui mappe une valeur à une autre. Il ne doit pas être non ordonné. Par exemple, je pourrais faire un dictionnaire sur un arbre binaire - dans ce cas, il serait commandé. En C++, std :: map a une interface de dictionnaire, et est ordonnée. Une table de hachage est non ordonnée, donc un dictionnaire fait à partir de l'un serait aussi. –