Группировка таблицы просмотра разделов по дням и странам - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть объект базовых данных с именем Событие , а два соответствующих атрибута называются startDateTime и countryCode .Моя проблема в том, что разделы в моем табличном представлении должны быть сгруппированы по дню и коду страны.Я видел много примеров того, как добиться группирования по дням (например, DateSectionTitles от Apple), но это становится намного сложнее, когда я добавляю код страны.

Я использую переходный разделIdentifier какрекомендуется в примере DateSectionTitles, и разделы выглядят примерно так: «20110928 SE», «20110929 SE», «20110928 ГБ» и т. д.

Сначала я попробовал это:

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"startDateTime" ascending:NO];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"countryCode" ascending:NO];
sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil];
[sortDescriptor1 release];
[sortDescriptor2 release];

Ноэто не работает, так как startDateTime имеет компонент времени, который приводит к несоответствию индекса.Мне нужно отсортировать startDateTime без компонента времени.

Очевидным решением будет разделение даты и времени на два разных атрибута объекта.Но когда я думаю об этом, это не сработает, поскольку дата относится к часовому поясу.Когда телефон меняет часовой пояс, атрибуты даты и времени будут недействительными.

Я также пытался создать подкласс NSSortDescriptor и создать пользовательскую функцию compareObject, но, кажется, она никогда не вызывается, и я не могу найти какой-либорабочие примеры.

Как бы вы решили это?Подклассный NSSortDescriptor - это верный путь, или, может быть, есть более умный путь?

1 Ответ

0 голосов
/ 29 сентября 2011

Создайте категорию на NSDate с помощью метода, который удаляет время с даты, возвращающейся только за день, например, преобразует это:

2011-09-29 09:53:28 -0500

… в это:

2011-09-29

Затем установитеваш ключ сортировки к dateAttribute.methodName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...