【问题标题】:Can I use more than one sectionNameKeyPath in a fetchedResultsController?我可以在 fetchedResultsController 中使用多个 sectionNameKeyPath 吗?
【发布时间】:2012-04-09 18:07:55
【问题描述】:

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

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

我做了一些挖掘,发现了这个帖子:Custom Section Name Crashing NSFetchedResultsController

Apple 文档似乎说主排序描述符需要与 sectionNameKeyPath 相同。

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

提前致谢。

【问题讨论】:

  • 你找到解决这个问题的方法了吗?

标签: iphone uitableview nsfetchedresultscontroller


【解决方案1】:

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

试试这个订购sortDecriptors

request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor];

这里,request 是传递给 NSFetchedResultsControllerNSFetchRequest 所以结果会先按照账单id排序,相同billID的对象会按照金额排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2017-04-23
    相关资源
    最近更新 更多