Могу ли я отсортировать NSDictionary на основе ключа в Objective-C? - PullRequest
44 голосов
/ 27 августа 2010

Можно ли отсортировать NSDictionary по ключу?

Ответы [ 2 ]

114 голосов
/ 27 августа 2010

Вы можете отсортировать ключи и затем создать NSMutableArray, перебирая их.

NSArray *sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(compare:)];
NSMutableArray *sortedValues = [NSMutableArray array];
for (NSString *key in sortedKeys)
    [sortedValues addObject: [dict objectForKey: key]];
2 голосов
/ 17 августа 2015

Гораздо проще использовать objectsForKeys:notFoundMarker: для этого

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:@""];
...