2011-11-14 37 views
11

我有一个NSMutableDictionary与字符串键,每个键都有自己的数组。我想按字母顺序重新排序字典中的键值。我怎样才能做到这一点?我如何使用键值对NSMutableDictionary进行排序?

+0

我已经不排序的NSMutableDictionary与键值,我想重新排序相同的NSMutableDictionary与键值按字母顺序。这可能与NSMutableDictionary? –

回答

19

字典根据定义未排序。

要按特定顺序遍历键,可以对包含字典键的数组进行排序。

NSArray *keys = [theDictionary allKeys]; 
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compareMethod:)]; 

还有其他几种sorted...方法,例如,用NSComparator排序。看看here

8

使用这一个

NSArray *myKeys = [Dict allKeys]; 
NSArray *sortedKeys = [myKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 
NSMutableArray *sortedValues = [[[NSMutableArray alloc] init] autorelease]; 

for(id key in sortedKeys) { 
    id object = [Dict objectForKey:key]; 
    [sortedValues addObject:object]; 
} 
+0

我用这个代码检索排序的字典,但仍然得到它未排序'代码NSMutableDictionary * dicProjectListSorted = [NSMutableDictionary词典]; NSArray * sortedKeys = [keys sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare :)]; NSMutableArray * sortedValues = [[[[NSMutableArray alloc] init] autorelease]; for(id key in sortedKeys){ id object = [dicProjectList objectForKey:key]; [sortedValues addObject:object]; [dicProjectListSorted setObject:sortedValues forKey:key]; } –

+0

从这个代码你得到的短键值和thn的关键值你得到你的数据 – Ron

+0

sortedKeys得到正确的排序,但当我尝试重新创建字典(dicProjectListSorted)在循环内我得到它未排序? –

2
NSDictionary *yourDictionary; 
NSArray *sortedKeys = [yourDictionary.allKeys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]]]; 
NSArray *sortedValues = [yourDictionary objectsForKeys:sortedKeys notFoundMarker:@""]; 
相关问题