swift - 如何对 NSFetchedResultsController 的不同部分使用不同的 NSSortDescriptor ? ( swift )

标签 swift uitableview nsfetchedresultscontroller

我有简单的 UITableView 应用程序,带有 1 个核心数据实体和 NSFetchedResultsController。我有 2 个部分,由 FRC 自动分割:

let sortDescriptor = NSSortDescriptor(key: "finished", ascending: true)
let sortByStartDate = NSSortDescriptor(key: "endDate", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor, sortByStartDate]<br/>
fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: "finished", cacheName: nil)

在 View Controller 中:

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return fetchedResultsController.sections!.count
}

这按 [sortDescriptor, sortByStartDate] 对两个部分进行排序。

问题: 通过另一个 NSSortDescriptor 对第二部分进行排序或只是以不同方式排序的最简单方法是什么(我是编程新手)?

感谢您的帮助!

最佳答案

取决于你如何处理尚未完成的项目。如果它们的 endDateNULL,则它们没有相对排序。因此,您可以在获取请求上添加第三个排序描述符,以便在第二部分中进行排序。

否则我会更改设置以使用第二个NSFetchedResultsController,这样每个部分都有一个。对两者使用谓词来过滤 finished == truefinished == false

关于swift - 如何对 NSFetchedResultsController 的不同部分使用不同的 NSSortDescriptor ? ( swift ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35598297/

相关文章:

ios - 我如何获得从一个 UIView 到另一个 UIView 的垂直距离?

ios - 如何从 UItableview 中删除单元格,当它在 onChildRemoved 方法中从 Firebase 中删除时?

iphone - 由于 NSManagedObjectContext 保存而更新 NSFetchedResultsController 时延迟 UITableView 更新

ios - CoreData 未触发故障

ios - 如何在 Swift 中连续录制音频并播放同一文件中的音频?

swift - 如何从界面生成器中检索 key

ios - Swift:确定数组是否包含数组

ios - 快速删除 indexPath 处的部分

iOS 11 动画大标题显示模式

iphone - 我应该注意什么来调试这个 Core-Data/NSFetchedResultsController 错误?