0

我有一个应用程序,它使用 Core Data 从数据库中提取数据,并UITableView通过NSFetchedResultsController. 我想不时地随机插入不同类型的自定义单元格(例如,在每 10 到 20 个单元格之间),它不会从同一个数据库中获取其数据,并且将是UITableViewCell.

我对如何进入数据源方法NSFetchedResultsControllerUITableView数据源方法感到有些困惑。我有各种选项允许对拉入的数据进行排序、过滤等,所以我不能依赖使用 indexPath 或类似的东西。

做这样的事情的最佳方法是什么?我知道我可以访问fetchedObjects-NSFetchedResultsController复制和修改它是正确的前进方式吗?比如说,创建fetchedObjectWithInterstitialCells并使用该数组的内容提供所有 Data Source 和 Delegate 方法?

有没有更好的方法/有其他方法吗?我需要能够保留对数据库中的数据进行排序/修改/过滤的能力,同时始终将这些间隙单元格保持在相同的间隔,即每 10 到 20 个单元格之间的随机间隔。

4

1 回答 1

1

我会考虑以下三种操作之一:

A:将对象插入到数据库中,这些对象与其他数据一起被拉取,但具有足以区分它们的属性以显示 UITableViewCell 的不同子类。可能是最简单的出路,除非你有一个非常困难的数据模型。

sectionNameKeyPathB:如果您可以使用上的- 属性将数据存储中的数据分组为部分NSFetchedResultsController,请选择NSFetchedResultsController+ UITableViewDataSource- 方法,然后返回[[self.fetchedResultsController sections] count] + numberOfInterstitialCells;inside numberOfSectionsInTableView:

然后,cellForRowAtIndexPath您需要覆盖 indexpath 中的 section-info,以便在 FetchedResultscontroller 的正确对象和您的插页式单元格之间切换。这可能是一种繁琐且困难的方法,但是如果您在 iOS6 上使用 parentContexts,那么实现的好处NSFetchedResultsControllerDelegate是非常棒的

C:使用普通的 fetchrequest 获取对象并将它们放入一个可变数组中,在其中插入间隙单元格,然后再加载视图并UITableViewDataSource使用此数组提供您的视图。与选项 A 一样简单,但您不会获得拥有 NSFetchedResults-Controller 的好处。

于 2013-02-27T20:21:00.670 回答