排序NSDictionary按存储为value的对象的属性

时间:2012-12-06 06:26:12

标签: objective-c ios

我将数据存储在NSMutableDictionary中以存储由Web服务接收的数据。

我想以alpha顺序显示数据但是我们知道字典存储数据以自己的方式存在,所以我得到了iOS 5和iOS 6的不同顺序.iOS 5很好但是在iOS 6中它改变了顺序。

我将int key和object存储为值。

对象包含ID,名称和描述。

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

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

我不想对我想要对作为对象存储在值部分中的Object.Name进行排序的键进行排序。

欢迎任何形式的帮助...... 提前谢谢..

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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];
}];