Transient sectionNameKeyKey&NSSortDescriptor NSFetchedResultsController

我有一个核心数据内的任务列表。 我使用NSFetchedResultsController将它们提取到UITableView中。

我需要自定义顺序中的自定义部分:

  • 逾期
  • 活性
  • 正在进行
  • 延后
  • 已完成
  • 要确定一个任务应该进入哪个部分,我使用基于相对对象中其他属性即时计算的派生瞬态属性。

    不幸的是,您无法将派生值作为提取请求使用的排序描述符进行传递。 这是因为取回依赖于已经有数据被要求取回。 鸡蛋。

    我明白为什么我不能这样做,这并不能帮助我解决问题!

    我试过了:

  • 将NSFetchedResultsController子类化为'自定义节和索引标题的创建'。 也许我做错了,但这只是改变了部分的名字和顺序,并没有改变那些部分的内容(这很关键)。

  • 每个部分填充数组并将它们送入桌子(笨重,缓慢但完全有效)。

  • 剔除正在进行的和推迟的任务(这是可行的,但并不理想)。 这样我可以通过dueDate进行排序,并通过瞬态值驱动sectionNameKeyPath。

  • 有没有人有更好的想法? 这个问题已经有很多问题了,但没有一个能够得到一个完美的解决方案。

    提前致谢!

    干杯


    最简单的解决方案是添加一个持久的'section'属性(或者转换你现有的transient属性)。 使它成为一组可排序的值(在运行时使用您想要的名称显示)。 无论何时更新任何记录,重新计算并存储节属性。

    我意识到这听起来像是在存储冗余信息,但除了使您的逻辑更简单之外,它也将是可索引的,这将加速访问。

    链接地址: http://www.djcxy.com/p/6135.html

    上一篇: Transient sectionNameKeyPath & NSSortDescriptor NSFetchedResultsController

    下一篇: Adding extra sections to a NSFetchedResultsController