2010-02-13 65 views
6

我想知道如果有人能告诉我如何排序NSDictionary;我想从最后一项开始读取它,因为关键是Date + Time,我希望能够将它附加到NSMutableString。我能够使用枚举器读取它,但我没有得到我想要的结果。排序NSDictionary

感谢

回答

13

您的要求最简单的方法是创建密钥的新阵,那种,然后使用数组从原来的字典引用的项目。

(注意myComparison是你自己的方法,将比较两个键)。

NSMutableArray* tempArray = [NSMutableArray arrayWithArray:[myDict allKeys]]; 
[tempArray sortedArrayUsingSelector:@selector(myComparison:)]; 

for (Foo* f in tempArray) 
{ 
    Value* val = [myDict objectForKey:f]; 
} 
0

我已经聚集了一些StackOverflow上的其他建议排序上一个NSDictionary到的东西非常紧凑,即会按字母顺序排序。我在'路径'中有一个Plist文件,我将其加载到内存中并希望转储。

NSDictionary *glossary = [NSDictionary dictionaryWithContentsOfFile: path]; 
NSArray   *array1 = [[glossary allKeys] sortedArrayUsingDescriptors:@[ [NSSortDescriptor sortDescriptorWithKey:@"" ascending:YES selector:@selector(localizedStandardCompare:)] ]]; 
for (int i=0; i<array1.count; i++) 
{ 
    NSString* key = [array1 objectAtIndex:i]; 
    NSString* value = [glossary objectForKey:key]; 
    NSLog(@"Key=%@, Value=%@", key, value); 
}