NSFetchedResultsController 按部分具有不同的排序描述符?

Posted

技术标签:

【中文标题】NSFetchedResultsController 按部分具有不同的排序描述符?【英文标题】:NSFetchedResultsController with different sort descriptors by section? 【发布时间】:2012-09-12 05:34:56 【问题描述】:

我有一个 NSFetchedResultsController,它具有与 sectionNameKeyPath 相同的排序描述符数组的第一个排序描述符,因此给了我不同的部分。但我希望第二个排序描述符是不同的 pr 部分。有没有一种好方法可以做到这一点,而无需我将数据推送到数组中然后再次排序?

干杯

尼克

【问题讨论】:

【参考方案1】:

您已经建议在内部为每个部分使用不同的数组。这不是一个坏方法,因为实际上您只需要担心显示对象的索引路径与真实对象之间的映射。

换句话说,您知道表格视图显示的项目数量很少,因为它向控制器询问这些项目。您不必直接从 FRC 中获取的结果数组中返回项目。

获取索引路径,找出正在请求的部分,然后获取该部分的预排序行。由于数据非常小,您可以根据要求对它们进行动态排序。

另一种方法是向数据模型添加另一个属性。此属性表示节内的排序顺序,您可以将其设置为您想要的任何值,因为整个数组将首先按节排序,然后按该属性。

此外,您可能会发现使用代理对象作为获取结果控制器的前端更容易。与“多个数组”方法类似,您只需使用代理对象,当表格视图请求该部分时,该对象在每个部分上应用唯一的排序描述符,并以自己的排序顺序返回对象。

【讨论】:

以上是关于NSFetchedResultsController 按部分具有不同的排序描述符?的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 应用程序中调用 performFetch 后,是不是需要手动更新表视图?