NSDictionary订购NSArray

时间:2017-08-17 15:12:58

标签: objective-c sorting nsarray nsdictionary

我在OSX,Objective-c而不是iOS。我有一个类似的NSDictionary

NSDictionary* dict = [NSDictionary alloc initWithObjectsAndKeys: 
                @"valueC", @"key3",
                @"valueA", @"key1",
                @"valueB", @"key2",
                nil];

当我调用NSDictionary的allKeys和allValues时,我得到了NSArrays。但每次应用程序运行时,订单都会更改 - 因为NSDictionary是一个无序集合。

我需要的是一个包含所有值的数组,但是按键后排序,按字母顺序排列,升序如下:

@[@"valueA", @"valueB",@"valueC"]; //--> ordered after their keys key1,key2,key3

修改 基本上我需要与此方法相反的方法:

- keysSortedByValueUsingComparator: // -> valuesSortedByKeyUsingComparator:

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

您可以先按字母顺序对键进行排序:

   sortedKeyArray = [[mydict allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

并枚举这个已排序的数组:

[sortedKeyArray enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    [sortedValueArray addObject:mydict[obj];
}];

现在您在sortedValueArray中有了排序值