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

时间:2012-03-26 08:17:20

标签: iphone uitableview nsfetchedresultscontroller

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

为此,我使用了fetchedResultsController。 每个账单都有金额和账单ID。 我已经使sortDescriptor'amount'和sectionNameKeyPath'billID'。这会导致问题,因为didChangeSection在需要时不会被适当调用。

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

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

我将sortDescriptor保持为'amount'并将sectionNameKeyPath更改为'billID'。这已经修复了这种行为。但是,如果两张票据具有相同的“金额”,则它们将在同一部分中,这是我不想要的。无论如何我可以让sectionNameKeyPath依赖于两个变量,例如'amount'和'billID'所以我可以保证每个账单都有一个单独的部分,但是按金额排序了吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

sortDescriptor的{​​{1}}属性实际上是一个数组。我们可以根据要对结果进行排序的属性顺序向它传递多个NSFetchRequest

尝试此排序sortDescriptor s

sortDecriptor

此处,request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor]; 是传递给request的{​​{1}} 因此,结果将首先按帐单ID排序,具有相同NSFetchRequest的对象将按金额排序。