如何解决在对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,并根据该属性以及其他属性进行排序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。