排序我的UITableView时如何计算空项目?

时间:2011-04-15 15:06:31

标签: iphone cocoa-touch uitableview nssortdescriptor

我有一个Checklists表,每个表都包含一堆ChecklistItems。每个ChecklistsItem都有2个Bool值:CheckedUrgent。 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 个答案:

答案 0 :(得分:1)

我能想到的最干净的事情就是声明另一个属性BOOL isEmpty并按照它和其他属性进行排序。