我在核心数据中有一个‘账单’的列表。对于每个账单,我希望在UITableViewController中有一个单独的部分。我要把这些账单按金额分类。
为此,我使用fetchedResultsController。每个账单都有一个金额和billID。我已经设置了sortDescriptor 'amount‘和sectionNameKeyPath 'billID’。这会导致问题,因为didChangeSection在需要的时候没有得到适当的调用。
我做了一些挖掘,偶然发现了这篇文章:Custom Section Name Crashing NSFetchedResultsController
看起来苹果公司的文档说主要的排序描述符需要与sectionNameKeyPath相同。
我保留了‘sortDescriptor’作为‘金额’,并将sectionNameKeyPath改为'billID‘。这已经修复了行为。然而,如果两个账单有相同的‘金额’,他们将在相同的部分,这是我不想要的。有没有什么办法可以让金额依赖于两个变量,例如,‘sectionNameKeyPath’和'billID‘,这样我就可以保证每个账单都有一个单独的部分,然后按金额排序?
提前谢谢。
发布于 2014-10-26 13:24:54
NSFetchRequest的sortDescriptor属性实际上是一个数组。我们可以根据希望对结果进行排序的属性的顺序向其传递多个sortDescriptor。
尝试此订购sortDecriptor%s
request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor];这里,request是传递给NSFetchedResultsController的NSFetchRequest,因此结果将首先按账单id排序,具有相同billID的对象将按金额排序。
https://stackoverflow.com/questions/9868719
复制相似问题