我在核心数据中列出了“账单”。 对于每个帐单,我希望在UITableViewController中有一个单独的部分。 我希望这些账单按金额分类。
为此,我使用了fetchedResultsController。 每个账单都有金额和账单ID。 我已经使sortDescriptor'amount'和sectionNameKeyPath'billID'。这会导致问题,因为didChangeSection在需要时不会被适当调用。
我做了一些挖掘并发现了这篇文章:Custom Section Name Crashing NSFetchedResultsController
看起来Apple文档说主要排序描述符需要与sectionNameKeyPath相同。
我将sortDescriptor保持为'amount'并将sectionNameKeyPath更改为'billID'。这已经修复了这种行为。但是,如果两张票据具有相同的“金额”,则它们将在同一部分中,这是我不想要的。无论如何我可以让sectionNameKeyPath依赖于两个变量,例如'amount'和'billID'所以我可以保证每个账单都有一个单独的部分,但是按金额排序了吗?
提前致谢。
答案 0 :(得分:0)
sortDescriptor
的{{1}}属性实际上是一个数组。我们可以根据要对结果进行排序的属性顺序向它传递多个NSFetchRequest
。
尝试此排序sortDescriptor
s
sortDecriptor
此处,request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor];
是传递给request
的{{1}}
因此,结果将首先按帐单ID排序,具有相同NSFetchRequest
的对象将按金额排序。