我在核心数据中有一个“账单”列表。 对于每个账单,我希望 UITableViewController 中有一个单独的部分。 我希望这些账单按金额排序。
为此,我使用 fetchedResultsController。 每张账单都有金额和账单 ID。 我已将 sortDescriptor 设为“amount”,将sectionNameKeyPath 设为“billID”。这会导致问题,因为 didChangeSection 在需要时没有被正确调用。
我做了一些挖掘并发现了这篇文章:Custom Section Name Crashing NSFetchedResultsController
看起来 Apple 文档说主排序描述符需要与sectionNameKeyPath 相同。
我将 sortDescriptor 保留为“amount”,并将sectionNameKeyPath 更改为“billID”。这已经修复了该行为。但是,如果两张账单具有相同的“金额”,它们将位于同一部分,这是我不希望的。无论如何,我是否可以让sectionNameKeyPath依赖于两个变量,例如“金额”和“billID”,这样我就可以保证每个账单都有一个单独的部分,但仍按金额排序?
提前致谢。
最佳答案
NSFetchRequest
的 sortDescriptor
属性实际上是一个数组。我们可以根据属性的顺序向其传递多个 sortDescriptor
,以希望对结果进行排序。
试试这个排序 sortDecriptor
s
request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor];
这里,request
是传递给 NSFetchedResultsController
的 NSFetchRequest
因此,结果将首先按账单 ID 排序,具有相同 billID
的对象将按金额排序。
关于iphone - 我可以在 fetchedResultsController 中使用多个sectionNameKeyPath吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868719/