好吧,我知道字典無法排序。但是,假設我有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