我有一个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放在底部。
如何让我的空核对清单显示在已完成的核对表上方,但仍然有多少项作为我的最终描述符?
答案 0 :(得分:1)
我能想到的最干净的事情就是声明另一个属性BOOL isEmpty并按照它和其他属性进行排序。