我正在使用NSFetchedResultsController为我的UITableView实现KVO(这很明显)。我不知道的是,如何同时使用多个实体(某种树状结构)。
这是我的设置:
现在,我可以获取要显示的任何一个的数据-到目前为止,一切都很好。我想要的是具有以下结构的单节式TableView(如展平 View ):
虽然看起来像是通过节来完成的事情,但事实并非如此。两个实体都应该是一个UITableViewCells。有人可以给我指出正确的方向,以扁平化而不丢失实际的层次结构。
最佳答案
听起来您需要维护自己的“扁平化”数据源。也许以下方法会起作用:
当NSFetchedResultController
告诉您已插入新的Entity1
时,您将Entity1
及其关联的Entity2
插入到_flattenedArray
中,所以它看起来像这样:[<Entity1>, <related Entity2>, <related Entity2>...]
插入它们的位置取决于您-几乎可以归结为:
Entity1
和关联的Entity2
对象_flattenedArray
中的何处插入新的子数组。 reloadData
或其他方式将新数据tableView
删除
Entity1
对象后,请将其和所有后续的Entity2
对象删除,直到遇到_flattenedArray
的结尾或遇到另一个Entity1
对象。这假定Entity2
绝不是“顶级”对象。如果是,则只需要删除关系中的那些Entity2
对象。当
Entity1
对象获得或丢失Entity2
对象时,您可以首先从Entity1
中删除_flattenedArray
对象,然后重新插入。如果这太有效,请执行合并。关于objective-c - NSFetchedResultsController-KVO,UITableView和 "Tree",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4747501/