iphone - 我可以在 fetchedResultsController 中使用多个sectionNameKeyPath吗?

标签 iphone uitableview nsfetchedresultscontroller

我在核心数据中有一个“账单”列表。 对于每个账单,我希望 UITableViewController 中有一个单独的部分。 我希望这些账单按金额排序。

为此,我使用 fetchedResultsController。 每张账单都有金额和账单 ID。 我已将 sortDescriptor 设为“amount”,将sectionNameKeyPath 设为“billID”。这会导致问题,因为 didChangeSection 在需要时没有被正确调用。

我做了一些挖掘并发现了这篇文章:Custom Section Name Crashing NSFetchedResultsController

看起来 Apple 文档说主排序描述符需要与sectionNameKeyPath 相同。

我将 sortDescriptor 保留为“amount”,并将sectionNameKeyPath 更改为“billID”。这已经修复了该行为。但是,如果两张账单具有相同的“金额”,它们将位于同一部分,这是我不希望的。无论如何,我是否可以让sectionNameKeyPath依赖于两个变量,例如“金额”和“billID”,这样我就可以保证每个账单都有一个单独的部分,但仍按金额排序?

提前致谢。

最佳答案

NSFetchRequestsortDescriptor 属性实际上是一个数组。我们可以根据属性的顺序向其传递多个 sortDescriptor,以希望对结果进行排序。

试试这个排序 sortDecriptors

request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor];

这里,request 是传递给 NSFetchedResultsControllerNSFetchRequest 因此,结果将首先按账单 ID 排序,具有相同 billID 的对象将按金额排序。

关于iphone - 我可以在 fetchedResultsController 中使用多个sectionNameKeyPath吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868719/

相关文章:

ios - 滚动 TableView 时出现 EXC_BAD_ACCESS 错误

ios - NSFetchedResultsController fetchAllGroupedBy 没有已知方法

IOS/X代码 : Calling NSFetchedResultsController Method in Other Class

ios - NSFetchedResultsController indexPathForObject 不计算部分

iphone - 使用 UIScrollView 以编程方式放大大图片的小区域

ios - 呈现 UIImagePickerController 会导致 iOS 7 崩溃

iphone - 核心数据删除最后一个条目

ios - 从 sqlite 数据库中删除除最新 500 行以外的所有行

iphone - tableView 滚动时 UITableView 委托(delegate)操作?

objective-c - 根据内容在 UITableViewCell 中调整 UIWebView 的大小