我可以根据Objective-C中的键对NSDictionary进行排序吗?

我可以根据Objective-C中的键对NSDictionary进行排序吗?,objective-c,sorting,key,nsdictionary,Objective C,Sorting,Key,Nsdictionary,我可以根据键对NSDictionary进行排序吗?您可以对键进行排序,然后通过迭代创建NSMutableArray NSArray *sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(compare:)]; NSMutableArray *sortedValues = [NSMutableArray array]; for (NSString *key in sortedKeys) [sortedValues

我可以根据键对
NSDictionary
进行排序吗?

您可以对键进行排序,然后通过迭代创建
NSMutableArray

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

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

那么这是不是一个正确的答案?有很多票,但没有接受?这是正确的答案。遗憾的是,(在iOS 7中,
[dictionary keysSortedByValueUsingSelector:@selector(compare:)]
的更简单方法不起作用。出于某种原因,它给我的结果几乎是随机排列的。我想知道
keysSortedByValueUsingSelector:
是否会根据数组的最后一个值插入到数组中,这有点无用。@mikeho:你提到的方法要老得多。但是大声读出来:按值排序的键。当使用选择器对值对象进行排序时,它返回字典的键。它不会返回按该选择器排序的键,这就是上面的代码所做的。@MaxSeelemann:你说得对!我误解了。我对名称的解释是键的值,而不是字典中与键关联的实际值的值。答案应该以“您无法对NSDictionary排序,但…”开头。答案是否为您提供了正确的信息?也许你可以把它标记为答案,这样这个问题就会被标记为已解决。