【发布时间】:2012-05-15 22:44:54
【问题描述】:
我在 Core Data 中有一个任务列表。我使用 NSFetchedResultsController 将它们提取到 UITableView 中。
我需要按自定义顺序自定义部分:
- 过期
- 活动中
- 正在进行中
- 推迟
- 已完成
为了确定任务应该进入哪个部分,我使用基于相关对象中的其他属性动态计算的派生瞬态属性。
很遗憾,您不能将派生值作为获取请求使用的排序描述符传递。这是因为获取依赖于已经有被要求获取的数据。鸡肉和鸡蛋。
我明白为什么我做不到,这并不能帮助我解决问题!
我试过了:
将 NSFetchedResultsController 子类化为“customise creation of sections and index titles”。也许我做错了,但这只是改变了部分的名称和顺序,而不是这些部分中有多少东西(这很关键)。
按部分填充数组并将它们提供给表(笨重, 缓慢但完全有效)。
删除正在进行和推迟的任务(这可行,但并不理想)。这样我可以按dueDate 排序并通过瞬态值驱动sectionNameKeyPath。
有没有人有更好的想法?像这样的问题已经有不少了,但没有一个能找到一个简洁的解决方案。
提前致谢!
干杯
【问题讨论】:
-
一个选项可能是 - 如果您已经从核心数据中获取所有任务 - 也许您可以为每个任务保存额外的属性 - 如果任务“即时”更改部分 - 它也可以更新在核心数据中 - 因此 - 动画由 controllerWillChangeContent: 委托方法重新定位在正确的部分?还是我错过了什么?
标签: iphone objective-c xcode nsfetchedresultscontroller