【问题标题】:iphone SDK: Core Data, how to sort sections in an NSFetchedResultsController?iphone SDK:核心数据,如何对 NSFetchedResultsController 中的部分进行排序?
【发布时间】:2011-05-19 12:42:09
【问题描述】:

我有一个核心数据应用程序,它将 sectionNameKeyPath“group.name”与 fetchRequest 一起使用,以便按组实体的名称属性对结果进行分组。我按 group.name 分组,但我想按 group.name 以外的其他内容排序这些部分。根据 NSFetchedResultsController 文档:

如果控制器生成部分, 数组中的第一个排序描述符 用于将对象分组为 部分;它的键必须是 与 sectionNameKeyPath 或 使用其键的相对排序必须 使用 sectionNameKeyPath 匹配。

这意味着这些部分必须按照分组的顺序进行排序。尽管有文档,但在 iOS 4.2 之前,您可以不指定 sectionNameKeyPath 作为第一个允许您对部分进行排序的排序描述符,但是不再。

在 NSFetechedResultsController 中对部分进行排序的最佳方法是什么?例如,我希望我的部分按“group.name”分组,但按“group.timestamp”排序。

【问题讨论】:

    标签: core-data ios4 nsfetchedresultscontroller


    【解决方案1】:

    来自 NSFetchedResultsController 文档:

    如果你创建这个类的一个子类,如果 你想自定义创建 章节和索引标题。你 覆盖 sectionIndexTitleForSectionName:如果 您希望部分索引标题为 大写以外的东西 部分名称的第一个字母。你 如果你覆盖 sectionIndexTitles 希望索引标题成为某种东西 除了由创建的数组 打电话 sectionIndexTitleForSectionName: on 所有已知的部分。

    【讨论】:

    • 那么,您是说我通过...对 NSFetchedResultsController 中的部分进行排序来对 NSFetchedResultsController 中的部分进行排序?非常玄学。
    • 在 4.2 之前有硬编码排序,按字母顺序按 sectionNameKeyPath 的第一个字母排序。在 4.2 中,它采用第一个提供的排序。如果您希望覆盖这些默认行为中的任何一个,您必须覆盖上面的 FRC 方法以提供您自己的行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多