具有多个节逻辑的NSFetchedResultsController

时间:2012-01-23 22:14:54

标签: uitableview core-data nsfetchedresultscontroller

我有一个添加到购物清单的商品列表。每个项目都有一个部门,并有一个标志,表明它是否已被收集。

我希望使用单个表格视图来显示它。问题是,我需要按部门对部分进行分组,然后在底部为收集的项目添加最后一个附加部分(无论部门如何)。

我可以创建一个fetchedResultsController过滤出收集的= yes并按部门轻松排序。但我需要在附加部分附加那些收集的项目=是。

我是否应该尝试创建带有复杂查询的fetchedResultsController来执行此操作?或者尝试手动添加一个部分和一些行?如果是这样,从哪里来?第二个FRC?是否可以将两个FRC输入到单个tableview中?

2 个答案:

答案 0 :(得分:1)

钟,

NSFetchedResultsController旨在提供单个提取来填充表视图。但您可以选择如何将数据输入表格视图。您可以随意手动翻译所提取的项目。你可以添加部分,额外的行,等等。这就是为什么他们在委托中展示模型的更新。它们让您有机会进行这些调整。

因此,如果您构建模型以使单个fetch完成工作,那么您在使用它时会有很大的灵活性。

安德鲁

答案 1 :(得分:0)

sectionKeypathName 可用,该参数带有一个参数来决定应包含多少个部分。如果您通过nil,则只有一个部分,但是如果您在 FetcherResultsController 中传递了一些 sectionKeypathName ,并将第一个 sortDescriptor 设置为sectionKeyPathName,您将在fethedResultsControllerDelegate中获得不同的部分。该 sectionKeypathName 必须是您要获取的实体中的属性。

let sortDescriptor = NSSortDescriptor(key: "sectionView", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: mainContext, sectionNameKeyPath: "sectionView", cacheName: nil)