根据对象值检索排序的字典键数组

时间:2014-10-28 22:28:50

标签: objective-c cocoa nsarray nsdictionary

我有一个NSMutableDictionary,其中包含如下信息:

Key="Blue" Value=@[@1, @33]
Key="Red" Value=@[@5, @33]
Key="Green" Value=@[@4, @33]
Key="Pink" Value=@[@2, @33]
Key="Purple" Value=@[@3, @33]

我希望得到一个键数组,按照Value数组中的第一个对象排序。所以在我上面的例子中,我想要一个具有这种排序的数组:

  

蓝色,粉色,紫色,绿色,红色

知道怎么做吗?

1 个答案:

答案 0 :(得分:4)

使用keysSortedByValueUsingComparator

NSDictionary *dict =
@{
  @"Blue": @[ @1, @33 ],
  @"Red": @[ @5, @33 ],
  @"Green": @[ @4, @33 ],
  @"Pink": @[ @2, @33 ],
  @"Purple": @[ @3, @33 ]
  };

NSArray *sorted = [dict keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [[obj1 firstObject] compare:[obj2 firstObject]];
}];

NSLog(@"%@", sorted);

输出:

2014-10-28 23:37:34.267 Temp[62789:3909211] (
    Blue,
    Pink,
    Purple,
    Green,
    Red
)