好吧,我知道字典无法排序。但是,假设我有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. iOS - 目标C,通过键名对NSDictionary的NSArray进行排序
- 2. 基于2个因素对字典进行排序
- 3. 基于字段对ArrayList进行排序?
- 4. 基于关键值对文档进行排序和排序?
- 5. Objective C NSDictionary:如何根据键的值对我的NSDictionary键进行排序
- 6. 到位排序字典对于键
- 7. Python:对字典进行排序(字典中的字典)
- 8. 对NSDictionary的NSArray进行排序
- 9. 在javascript中对键值对进行排序字典
- 10. 按列表中的值对字典键进行排序?
- 11. 基于两列对DataTable进行排序
- 12. 排序基于NSDictionary的UITableView的密钥
- 13. Python:基于元组值对字典进行排序。列表输出
- 14. 如何在推入新项目时对字典进行排序?
- 15. 基于字段值对Solr多值字段进行排序
- 16. 用VBA中的键对字典排序
- 17. 通过排序第二层字典对多层字典进行排序
- 18. 基于一个特定的字段对php表进行排序
- 19. 如何基于对象键值对PHP数组中的对象进行排序?
- 20. Python的字典排序基于两个值的字典
- 21. 基于某些条件对字符串数组进行多级排序
- 22. 字典排序基于较低的字典值
- 23. 分组基于字典键
- 24. 检索字典键的有序阵列基于对象的值
- 25. 按字母顺序对字典进行排序
- 26. 基于与快捷键相关的元组值的字典键排序
- 27. 按Python中的列表中的值对字典中的键进行排序
- 28. 基于多个键值和比较规则排序字典对象
- 29. 基于日期键排序JavaScript对象
- 30. 基于计算排序键/对
既不'keys'也不'sortedKeys'这里是一个可变字典,它们是不可变的。 – 2012-07-19 06:20:09
ops你的意思是一个可变的数组?我只是从问题ha – mask8 2012-07-19 06:24:16
复制粘贴,是的,我的意思是可变数组。 – 2012-07-19 07:02:23