在对UITableView排序时如何处理空项目?

| 我有一张
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放在底部。 如何使我的空清单显示在已完成清单的上方,但仍将项目数作为最终描述符?     
已邀请:
我可以想到的最干净的方法是声明另一个属性BOOL isEmpty,并根据该属性以及其他属性进行排序。     

要回复问题请先登录注册