好吧,我知道字典无法排序。但是,假设我有NSMutableArray *keys = [someDictionary allKeys];
现在,我想根据字典中的相应值(按字母顺序)对这些键进行排序。所以如果字典包含key=someString
,那么我想根据它们对应的字符串对keys
进行排序。我认为它的一些应用sortUsingComparator
,但在这一点上我有一点点的不足。Objective-C:基于字典条目对NSDictionary的键进行排序
10
A
回答
18
NSArray *keys = [someDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *first = [someDictionary objectForKey:a];
NSString *second = [someDictionary objectForKey:b];
return [first compare:second];
}];
3
NSDictionary *dict = // however you obtain the dictionary
NSMutableArray *sortedKeys = [NSMutableArray array];
NSArray *objs = [dict allValues];
NSArray *sortedObjs = [objs sortedArrayUsingSelector:@selector(compare:)];
for (NSString *s in sortedObjs)
[sortedKeys addObjectsFromArray:[dict allKeysForObject:s]];
现在sortedKey
将包含按其对应的对象排序的键。
1
只是把它写在这里,因为我没有在任何地方找到它:为了得到一个字母基于价值排序的NSDictionary从一个NSDictionary回来 - 这在我的情况是neccessary - 你可以做到以下几点:
//sort typeDict alphanumeric to show it in order of values
NSArray *keys = [typeDict allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *first = [typeDict objectForKey:a];
NSString *second = [typeDict objectForKey:b];
return [first compare:second];
}];
NSLog(@"sorted Array: %@", sortedKeys);
NSMutableDictionary *sortedTypeDict = [NSMutableDictionary dictionary];
int counter = 0;
for(int i=0; i < [typeDict count]; i++){
NSString *val = [typeDict objectForKey:[sortedKeys objectAtIndex:counter]];
NSString *thekey = [sortedKeys objectAtIndex:counter];
[sortedTypeDict setObject:val forKey:thekey];
counter++;
}
NSLog(@"\n\nsorted dict: %@", sortedTypeDict);
没什么大不了的!基于字典的NSDictionary的
+0
正在寻找这个,谢谢! – 2015-07-16 23:27:40
2
排序键键
的Abobe被用于返回一个排序后的数组基于字典的内容,这是用于返回由字典键排序阵列:
NSArray *keys = [theDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
return [a compare:b];
}];
NSMutableArray *sortedValues = [NSMutableArray new];
for(NSString *key in sortedKeys)
[sortedValues addObject:[dictFilterValues objectForKey:key]];
相关问题
- 1. 按键值对字典进行排序
- 2. 基于字典中的键排序
- 3. 排序基于字典的键
- 4. 基于Python中的字典值对列表进行排序?
- 5. iOS - 目标C,通过键名对NSDictionary的NSArray进行排序
- 6. 基于数值转换为整数后的值对字典键进行排序
- 7. 基于2个因素对字典进行排序
- 8. 基于密钥对Python字典进行排序?
- 9. 基于字段对ArrayList进行排序?
- 10. 基于关键值对文档进行排序和排序?
- 11. Objective C NSDictionary:如何根据键的值对我的NSDictionary键进行排序
- 12. 对基于字典唯一键的NSDictionaries数组排序
- 13. 到位排序字典对于键
- 14. Python:对字典进行排序(字典中的字典)
- 15. 如何基于两个键值对数组键进行排序?
- 16. 对NSDictionary的NSArray进行排序
- 17. 在javascript中对键值对进行排序字典
- 18. Python:通过使用键升序对字典进行排序
- 19. 基于包含字母数字值的键排序python字典
- 20. 如何通过Scala中的键对字典进行排序?
- 21. 按列表中的值对字典键进行排序?
- 22. 用两个不同的键对字典列表进行排序
- 23. 在Python中对字典进行排序
- 24. 如何对字典进行排序?
- 25. 返回基于用于获得这些字典键字典的排序迭代
- 26. 基于键值对HashMap的ArrayList进行排序
- 27. 基于多个关键字对Pandas数据框上的行进行排序
- 28. 基于Newsequentialid对记录进行排序()
- 29. 基于两列对DataTable进行排序
- 30. 如何按值和键对字典进行排序?
既不'keys'也不'sortedKeys'这里是一个可变字典,它们是不可变的。 – 2012-07-19 06:20:09
ops你的意思是一个可变的数组?我只是从问题ha – mask8 2012-07-19 06:24:16
复制粘贴,是的,我的意思是可变数组。 – 2012-07-19 07:02:23