Так что в настоящее время у меня есть таблица, которая отображает сообщения, но я бы хотел сгруппировать сообщения по дате, например,
вторник 4/5/98 // header
сообщение 1
сообщение 2
сообщение 3
Среда 4/6/98
сообщение 1
и т.д.
Так что сейчас это просто один длинный NSMutableArray oldArr (отсортированный).
То, о чем я думал, это создание другого NSMutableArray (groupArr) уникальных объектов даты (DateGroup), в котором каждая DateGroup будет иметь следующие ivars:
int size; //number of messages for date
int index; //index of first message in the total array
//so I can easily retrieve the object when the section and row is asked
NSDate date; //need the date for the header
С помощью этих иваров я могу получить все разделы с размером groupArr, все отдельные размеры строк, получая доступ к размеру DateGroup, и отдельную ячейку, если дан раздел, аргументы строки, получая индекс + строка.
Я думаю, что это лучший способ сделать это. Однако у меня проблемы с заполнением groupArr из oldArr (который будет динамически увеличиваться в размере). Я думал о том, чтобы пройти один за другим через oldArr с этим псевдокодом:
NSDate date = nil;
int size = 1;
int index = 0;
for (int i = 0; i < oldArr.size; i++) {
OldGroup* cur = [oldArr objectAt:i];
if (date is different from cur->date){ //i know, it's pseudocode
DateGroup* newGroup = [[DateGroup alloc] initWithDate:cur->date index:index];
[groupArr add:NewGroup];
date = cur->date;
index += size;
size = 1; <br/>
} else{ //the date is the same, so the object belongs in the group
[groupArr lastObject].size++;
}
}
В любом случае, хотя я думаю, что это сработает, мне кажется, что это очень нелегко. Я думал об использовании «indexOfObjectPassingTest» NSMutableArry, чтобы найти следующую дату, но не могу реализовать ее концептуально. Я пытаюсь придумать хороший способ сделать это. Есть предложения?