【发布时间】:2015-07-07 19:39:03
【问题描述】:
我有一个基本列表应用程序,其中包含两个实体 Folder 和 Item 具有一对多关系,文件夹子类有一个名为 itemsArray() 的函数,它返回排序数组中的 Items通过creationDate 显示UITableView。
Item 有两个属性称为date,类型为NSDate,另一个属性为bool,称为completed。我创建了一个函数,可以在其中将单元格项目对象标记为已完成,这会将单元格文本颜色更改为灰色。
有没有办法也可以按其完成值对其进行排序?例如,completed 的值 true 或 false 应该分隔所有已完成的项目,然后还按 creationDate 对其进行排序。
最终结果应该是已完成项目位于UITableView 底部的位置,并且按日期顺序排列,未完成项目按日期顺序排列。好像完成的优先级高于日期,但仍按创建日期排序
这是我当前使用排序描述符返回数组的函数;
func itemsArray() -> [Item] {
let sortDescriptor = NSSortDescriptor(key: "creationDate", ascending: true)
return checklist.sortedArrayUsingDescriptors([sortDescriptor]) as! [Item]
}
PS:我尝试了一些变通方法,例如将日期标记为已完成更新,因此它位于底部。这将已完成的项目与未完成的项目分开。但是,当取消标记该项目时,它仍保留在底部,这也不是一个好的长期解决方案,因为我可能想将排序更改为按字母顺序和完成。
【问题讨论】:
标签: ios swift uitableview sorting core-data