2014-11-19 2 views
-2

У меня есть массив объектов с датой внутри. Теперь мне нужно сгруппировать объекты в UITableView к этой дате. Для нелогич-:Как отсортировать разделы UITableView

0-{10-14; Obj1}; 
1-{10-14; Obj2}; 
2-{10-15; Obj3}; 
3-{10-15; Obj4}; 

мне нужно, чтобы посмотреть его на моем UITableView как этот

10-14 
    0-{10-14; Obj1}; 
    1-{10-14; Obj2}; 
10-15 
    2-{10-15; Obj3}; 
    3-{10-15; Obj4}; 

Для решения я сделал следующий; Я расщепляется мой массив в NSDictationary с этим кодом:

NSMutableDictionary *preResult = [[NSMutableDictionary alloc] init]; 
for (ClientMessage *message in array) { 
    NSMutableArray *mArray = [preResult objectForKey:message.formattedDate]; 
    if (mArray == nil) { 
     mArray = [[NSMutableArray alloc] init]; 
     [preResult setObject: mArray forKey:message.formattedDate]; 
    } 
    [mArray addObject:message]; 
} 

И мой взгляд Таблица показывает мне, что я хочу, но это показывает в неправильном порядке; (мой массив был отсортирован по дате) Я знаю, что я не могу сортировать NSDictationary, в этом случае, как я могу отсортировать значения в представлении таблицы? Или есть другой способ группировать мои ценности без NSDictationary?

+0

Вы не можете отсортировать NSDictionary. Используйте массив массивов. –

+0

Измените * preResult * на массив и отсортируйте его в конце кода, который вы опубликовали – rdurand

ответ

0

После того, как вы закончили загрузку словаря со всеми значениями, вы хотите отсортировать каждый массив в пределах словаря ...

for (NSString *key in [preResult allKeys]) 
{ 
    NSMutableArray *mArray = [preResult objectForKey:key]; 
     // sort array to achieve the desired result 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"formattedDate" ascending:YES]; 
    NSArray *sortedArray = [mArray sortedArrayUsingDescriptors:@[sortDescriptor]]; 
     // reset newly sorted array for key inside the dictionary 
    [preResult sortedArray forKey:key]; 
} 
Смежные вопросы