NSDictionary to ordered NSArray



我在OSX上,objective-c而不是iOS。我有一个这样的 NSDictionary

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

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

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

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

编辑基本上我需要与这种方法相反的方法:

- keysSortedByValueUsingComparator: // -> valuesSortedByKeyUsingComparator:

任何帮助表示赞赏。

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

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

并通过此排序数组枚举:

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

现在您在 sortedValueArray 中有了排序值

最新更新