我在核心数据中有一个任务列表。我使用 NSFetchedResultsController 将它们提取到 UITableView 中。
我需要自定义订单中的自定义部分:
- OVERDUE
- ACTIVE
- ONGOING
- 推迟
- 完全的
为了确定任务应该进入哪个部分,我使用基于相关对象中的其他属性动态计算的派生瞬态属性。
不幸的是,您无法将派生值作为获取请求使用的排序描述符传递。这是因为提取依赖于已经拥有被要求提取的数据。鸡蛋。
我明白为什么我做不到,但这并不能帮助我解决问题!
我试过了:
将 NSFetchedResultsController 子类化为 '定制创建
章节和索引标题 http://developer.apple.com/library/ios/DOCUMENTATION/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40008227-CH1-DontLinkElementID_2'。也许我做错了,但这只是改变了部分的名称和顺序,而不是这些部分中有多少东西(这很关键)。
填充每个部分的数组并将它们输入到表中(笨重,
缓慢但完全有效)。
取消正在进行的和推迟的任务(这有效,但并不理想)。这样我就可以按 dueDate 排序并通过瞬态值驱动sectionNameKeyPath。
有人有更好的想法吗?像这样的问题已经有很多了,但没有一个能找到一个完美的解决方案。
提前致谢!
Cheers
最简单的解决方案是添加持久的“部分”属性(或转换现有的瞬态属性)。使其成为一组可排序的值(您可以在运行时使用所需的名称显示这些值)。每当您更新任何记录时,也重新计算并存储部分属性。
我意识到这听起来像是您在存储冗余信息,但除了使您的逻辑更简单之外,它还将是可索引的,这将加快访问速度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)