2011-04-15 2 views
0

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

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

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:@"[email protected]" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:itemsUncheckedDescriptor, itemsUrgentDescriptor, itemsCountDescriptor, nil]; 
[items sortUsingDescriptors:sortDescriptors]; 

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

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

ответ

1

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

+0

Спасибо, Майк. Я думал, что это может быть что-то в этом роде. Кажется, я добавляю в свою модель все более «вспомогательные» атрибуты, которые отлично работают, но поскольку я учу себя, я не знаю, как «нормальный» этот подход! –

+0

Не беспокойтесь о «нормальном». Беспокойство о 1) правильно (работает), 2) понятно 3) ремонтируемое 4) проверяемое 5) весело ..... 317) нормально. – Rayfleck

+0

Я понимаю, что нет способа добавить формулу (т. Е. «ChecklistItems. @ Count == 0») к NSSortDescriptor? –

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