NSFetchedResultsController部分按动态条件分组?

时间:2012-04-06 04:01:15

标签: iphone objective-c ios ipad core-data

我在CoreData中有2个实体(与此相关)。我们称他们为objectAobjectB。每个实体与另一个实体有多对多的关系。

我有一个视图,它使用NSFetchedResultsController来显示表中所有objectB个对象(记录)的列表。一切正常。

现在,我正在尝试做的是,给定任何一个 objectA,提供一个表格,其中每个objectB都有一个与第一部分中特定 objectA的关系,以及第二部分中的其余部分。根据我的尝试,sectionNameKeyPath中的NSFetchedResultsController似乎不够灵活,无法允许这样的内容。

我错过了什么,或者还有其他方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:0)

不幸的是,NSFetchedResultsController似乎不够灵活,所以我最终使用两个NSFetchedResultsController来分别获取具有不同谓词的第一和第二部分。

答案 1 :(得分:0)

我想提出另一种解决方案,

在您的实体(例如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都会调用计算出的属性。