Как мне учесть пустые элементы при сортировке моего UITableView? - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть таблица Checklists, каждая из которых содержит связку ChecklistItems.Каждый ChecklistsItem имеет 2 значения Bool: Checked и Urgent.Сущность Checklist также имеет различные атрибуты, которые я использую для отслеживания вещей (например, itemsUnchecked).

Я хочу отсортировать свою таблицу с наименее полными контрольными списками (то есть теми, с самыми непроверенными элементами) вверху,Я устанавливаю свои дескрипторы сортировки следующим образом:

NSMutableArray *items = [NSMutableArray arrayWithArray:fetchedResultsController.fetchedObjects];
NSSortDescriptor *itemsUncheckedDescriptor = [[NSSortDescriptor alloc] initWithKey:@"itemsUnchecked" ascending:NO];
NSSortDescriptor *itemsUrgentDescriptor = [[NSSortDescriptor alloc] initWithKey:@"itemsUrgent" ascending:NO];
NSSortDescriptor *itemsCountDescriptor = [[NSSortDescriptor alloc] initWithKey:@"checklistItems.@count" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:itemsUncheckedDescriptor, itemsUrgentDescriptor, itemsCountDescriptor, nil];
[items sortUsingDescriptors:sortDescriptors];

Все это прекрасно работает, кроме одной вещи.Если контрольный список пуст (т. Е. В нем еще нет элементов контрольного списка), он отображается под полными контрольными списками (т. Е. Отмечены все их элементы).Это связано с тем, что пустые контрольные списки содержат ноль элементов, поэтому мой itemsCountDescriptor помещает их внизу.

Как я могу сделать так, чтобы мои пустые контрольные списки отображались над заполненными контрольными списками, но при этом количество элементов оставалось моим окончательным дескриптором?

1 Ответ

1 голос
/ 15 апреля 2011

Самая чистая вещь, которую я могу придумать, - объявить еще один атрибут BOOL isEmpty и отсортировать по нему, а также по другим вашим атрибутам.

...