我有一个包含两个部分的tableview,"最喜欢"和"最近"订购存储的联系人。 我想按字母顺序排序收藏,最近按日期排序。 每个联系人都有一个"名称"和#34; createdAt"价值(和价值"最喜欢"如果它是最喜欢的)。
使用下面的排序我有我的部分"最喜欢"和"最近"使用正确的单元格,但都按字母顺序排序。
...
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "favorite", ascending: false),
NSSortDescriptor(key: "firstName", ascending: true)]
fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: stack.viewContext, sectionNameKeyPath: "favorite", cacheName: nil)
...
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
guard let currentSection = fetchedResultsController.sections?[section] else { return nil }
if currentSection.name == "0" {
return "Recent".localized
} else {
return "Favorites".localized
}
}
如何对“"最近"按日期?
答案 0 :(得分:0)
我通过手动更改第二部分的indexPath解决了这个问题。 我有一个函数返回indexPath以不同的方式为第二部分。
func changeIndexPath (_ indexPath: IndexPath) -> IndexPath {
... //sort you want
}
然后我可以使用tableview的功能
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
newIndexPath = changeIndexPath(indexPath)
...
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
...
}
etc