gpt4 book ai didi

iphone - Transient sectionNameKeyPath & NSSortDescriptor NSFetchedResultsController

转载 作者:太空狗 更新时间:2023-10-30 03:16:46 25 4
gpt4 key购买 nike

我在 Core Data 中有一个任务列表。我使用 NSFetchedResultsController 将它们提取到 UITableView 中。

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

  1. 逾期
  2. 活跃
  3. 进行中
  4. 推迟
  5. 完成

为了确定任务应该进入哪个部分,我使用基于相关对象中的其他属性动态计算的派生 transient 属性。

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

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

我试过:

  • 将 NSFetchedResultsController 子类化为“customise creation ofsections and index titles” '.也许我做错了,但这只是改变了部分的名称和顺序,而不是这些部分中的内容(这很关键)。

  • 每个部分填充数组并将它们提供给表格(笨重,缓慢但完全有效)。

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

有没有人有更好的想法?已经有相当多的问题像这个一样,但没有一个能得到一个巧妙的解决方案。

提前致谢!

干杯

最佳答案

最简单的解决方案是添加持久的“部分”属性(或转换现有的 transient 属性)。使它成为一组可排序的值(您在运行时使用您想要的名称显示)。每当您更新任何记录时,也要重新计算并存储部分属性。

我意识到这听起来像是您在存储冗余信息,但除了让您的逻辑更简单之外,它还可以编入索引,从而加快访问速度。

关于iphone - Transient sectionNameKeyPath & NSSortDescriptor NSFetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com