web-dev-qa-db-fra.com

Puis-je trier le NSDictionary sur la base de la clé dans Objective-C?

Puis-je trier le NSDictionary en fonction de la clé?

44
suse

Vous pouvez trier les clés puis créer un NSMutableArray en les itérant.

NSArray *sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(compare:)];
NSMutableArray *sortedValues = [NSMutableArray array];
for (NSString *key in sortedKeys)
    [sortedValues addObject: [dict objectForKey: key]];
114
Max Seelemann

Il est beaucoup plus simple d'utiliser objectsForKeys:notFoundMarker: pour ça

NSDictionary *yourDictionary;
NSArray *sortedKeys = [yourDictionary.allKeys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]]];
// As we using same keys from dictionary, we can put any non-nil value for the notFoundMarker, because it will never used
NSArray *sortedValues = [yourDictionary objectsForKeys:sortedKeys notFoundMarker:@""];
3
Vitaliy Gozhenko