2012-12-06 75 views
6

我存储NSMutableDictionary数据存储由Web服务接收到的数据。排序的NSDictionary通过对象的属性存储为值

我想显示字母顺序的数据,但我们知道以自己的方式解释存储数据,所以我M代表的iOS 5和iOS 6的iOS 5使用不同的顺序是好的,但在iOS 6中改变它的顺序。

我存储INT键和对象值。

对象包含ID,名称和说明。

EX: 
    key value 
    1 - (12,bhgjksd,kijdh) 
    6 - (13,kjfd,ikjk) 
    2 - (14,ljiuhbdf,dsjhfj) 

如何按Object.Name属性对Dictionary进行排序。 或根据Object.Name排序顺序获取密钥。

我不想排序键我要作为排序依据存储在价值一部分对象Object.Name。

任何形式的帮助,欢迎..... 在此先感谢..

+0

你可以看看这个 http://stackoverflow.com/questions/8118932/how-can-i-sort-nsmutabledictionary-with-keys-值 –

+1

嗨Amrit感谢有空。但在这个问题上,他希望根据关键字进行排序,而我想根据价值进行排序。 – CRDave

回答

6

试试这个,

NSArray *sortedKeys = [dict keysSortedByValueUsingComparator: ^(id obj1, id obj2) { 

    return (NSComparisonResult)[obj1.name compare:obj2.name];; 
}]; 

您将获得sortedKeys阵列中所有的钥匙,在的顺序排序object.name属性。您可以使用这些键从字典中获取值为[dict valueForKey:[sortedKeys objectAtIndex:i]]。详情请咨询check apple documentation

+0

谢谢这解决了我的问题,我从keysSortedByValueUsingComparator喜欢它。首先我从这里找到它http://stackoverflow.com/questions/11217421/sort-nsdictionary-keys-by-dictionary-value-into-an-nsarray?rq=1。谢谢你试试帮助我。 – CRDave

+0

这也帮助我比比的NSString http://getsetgames.com/2009/12/10/iphonedev-advent-tip-10-string-comparison-using-nsstring/ – CRDave

+0

我不知道,我只能接受一个答案所以我去选择另一个答案。 – CRDave

3
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"Object.Name" ascending:YES]; 
[items sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; 

此外,

NSArray *ordered = [myDictionary keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2){ 
    return [obj1.name compare:obj2.name]; 
}]; 
+0

谢谢尝试帮助我。我解决我的问题通过keysSortedByValueUsingComparator – CRDave

+1

这也帮助我比比的NSString http://getsetgames.com/2009/12/10/iphonedev-advent-tip-10-string-comparison-using-nsstring/ – CRDave

+0

我没有照抄照搬你,我只是用2种方式发布答案。它到达OP,他想要的方式。即使你和我的答案有一些差异。我不在乎是否有人接受我的答案。即使是downvote也会对我很好;) –

相关问题