2015-04-13 3 views
0

У меня есть неупорядоченный словарь вроде этого:Объективные-C словарь ключей сортировки в порядке убывания

@{ @"20101R" : @"value1", 
    @"20102R" : @"value2", 
    @"20131R" : @"value3", 
    @"20111R" : @"value4", 
    @"20122R" : @"value5" } 

Каждый ключ представляет год и либо 1R или 2R.

Для UITableView, я хочу поставить 'ключи' в качестве заголовка и 'ценность' в подзаголовке так:

от последней значения ключа ->старейшего значения ключа

title : 20131R 
subtitle : value3 

title : 20122R 
subtitle : value5 

title : 20111R 
subtitle : value4 

title : 20102R 
subtitle : value2 

title : 20101R 
subtitle : value1 

Может вы поможете мне отсортировать эту цифровую строку в порядке убывания? Каков самый простой способ сделать это? Спасибо заранее.

+2

Словари не может быть заказан. Сохраняйте отдельный массив, содержащий ключи словаря, в том порядке, в котором они будут отображаться. – trojanfoe

ответ

2

Вытяните ключи с

NSArray *keysArray = [dictionary allKeys]; 

Затем отсортировать массив:

NSArray *sortedArray = [keysArray sortedArrayUsingComparator:^NSComparisonResult(NSString* _Nonnull obj1, NSString* _Nonnull obj2) { 
    return obj1 < obj2; 
}]; 
+0

Как это происходит? Вам нужно либо изменить результирующий массив, либо использовать NSSortDescriptor. – dgatwood

+0

@dgatwood Вы правы! Я обновил метод сортировки! – Jbryson

+0

Я не думаю, что вы можете безопасно использовать операторы сравнения в указателях Objective-C таким образом. Однако вы можете использовать '- [obj1 compare: obj2]'. (Обратите внимание на минус, чтобы поменять «NSOrderedAscending» и «NSOrderedDescending».) – dgatwood

Смежные вопросы