NSFetchedResultsController 部分按动态条件分组?
Posted
技术标签:
【中文标题】NSFetchedResultsController 部分按动态条件分组?【英文标题】:NSFetchedResultsController section grouping by dynamic condition? 【发布时间】:2012-04-06 04:01:15 【问题描述】:我在 CoreData 中有 2 个实体(与此相关)。我们称他们为objectA
和objectB
。每个实体与另一个实体具有一对多关系。
我有一个视图,它使用NSFetchedResultsController
在表中显示所有objectB
对象(记录)的列表。一切正常。
现在,我要做的是,给定任何一个 objectA
,提供一个表格,其中包含与objectB >具体的 objectA
在第一部分,其余的在第二部分。根据我的尝试,NSFetchedResultsController
中的 sectionNameKeyPath
似乎不够灵活,无法允许这样的事情。
我是否遗漏了什么,或者有其他方法可以做到这一点吗?
【问题讨论】:
【参考方案1】:不幸的是,NSFetchedResultsController
似乎不够灵活,因此我最终使用了两个 NSFetchedResultsController
s 来分别获取具有不同谓词的第一和第二部分。
【讨论】:
我认为您正在尝试与 NSFRC 对抗,在具有两个 NSFRC 的表视图中管理两个部分将是错误的,因为它旨在一次使用一个 FRC。【参考方案2】:我想建议另一种解决方案,
在您的实体(例如 sectionName 或类似)中创建一个属性,该属性将根据您的条件决定,例如。 '一二'。
现在,当您创建 FRC 时,请使其根据“sectionName”(新条目)以升序创建部分。
现在你有两个基于条件的部分。
我就是这样弄的,
在我的核心数据实体子类中创建了一个计算属性,
var groupSectionName:String?
return isPinned /**Or your condition*/ ? "One" : "Two"
在创建 FRC 时,
let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: "groupSectionName",cacheName: nil)
现在,对于每个索引,FRC 都会调用计算属性。
【讨论】:
以上是关于NSFetchedResultsController 部分按动态条件分组?的主要内容,如果未能解决你的问题,请参考以下文章