我已经研究了一段时间,我认为有很多解决方案,但我不确定它们是否那么好。可能是我错过了什么:-)
我有两张桌子。对于 TableA 中的每条记录,TableB 中都有多条记录。即一对多的关系。我已经将它映射到核心数据中并生成了类。到现在为止还挺好。
我的基于表格视图的 UI 需要如下所示:
Section 1
Cell 1: Table A: field1
Cell 2: Table A: field2
-----
Section 2
Cell 1: Table B: record 1: field1
Cell 2: Table B: record 2: field1
....
当我在我tableView:cellForRowAtIndexPath:
的时候,很容易处理第 1 节单元格,因为它们是来自单个表 A 记录的不同字段。第 2 节单元格不同。每次tableView:cellForRowAtIndexPath:
调用我都需要从表 A 的 NSSet 中获取正确的表 B 记录。这就是问题所在。
NSSet doco表示不保证订单。这意味着如果我想要基于索引的特定记录,我有几种可能的技术:
- 向核心数据查询添加排序描述符,并使用快速枚举获取我想要的记录。我不知道这是否可行,因为我们仍在使用 NSSet。
- 在获取数据后使用排序描述符对 NSSet 进行排序以生成 NSArray 并将其存储在属性中,然后再开始加载表。
- 我现在正在考虑第三种选择,即为 NSSet 编写一个装饰器,它的作用类似于 NSArray,并允许我指定一个排序字段并自动跟踪对 NSSet 的更改。棘手,但从长远来看可能会有所回报。
这些答案似乎都不是那么好。有一个更好的方法吗?