NSDictionary 到有序的 NSArray
NSDictionary to ordered NSArray
我在 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:
感谢任何帮助。
您可以先按字母顺序对键进行排序:
sortedKeyArray = [[mydict allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
并枚举这个排序数组:
[sortedKeyArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[sortedValueArray addObject:mydict[obj];
}];
现在您在 sortedValueArray
中有了排序后的值
我在 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:
感谢任何帮助。
您可以先按字母顺序对键进行排序:
sortedKeyArray = [[mydict allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
并枚举这个排序数组:
[sortedKeyArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[sortedValueArray addObject:mydict[obj];
}];
现在您在 sortedValueArray
中有了排序后的值