Ios NSFetchedResultsController-对单个实体的结果进行分组

Ios NSFetchedResultsController-对单个实体的结果进行分组,ios,objective-c,uitableview,nsfetchedresultscontroller,Ios,Objective C,Uitableview,Nsfetchedresultscontroller,假设我的核心数据模型包含以下实体Family: 我想使用NSFetchedResultsController以以下格式在UITableViewController中显示族的内容,其中父项是“节”,子项列在“父项”下: 在我的视图控制器文件中,我有以下内容: - (void)setFRC { NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:[Family entityName]]; NS

假设我的核心数据模型包含以下实体Family:

我想使用NSFetchedResultsController以以下格式在UITableViewController中显示族的内容,其中父项是“节”,子项列在“父项”下:

在我的视图控制器文件中,我有以下内容:

- (void)setFRC
{
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:[Family entityName]];

    NSSortDescriptor *sort1 = [[NSSortDescriptor alloc] initWithKey:@"Child" ascending:YES];
    NSSortDescriptor *sort2 = [[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES];

    NSArray *sorters = [NSArray arrayWithObjects:sort1, sort2, nil];

    [request setSortDescriptors:sorters];

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:[MYCoreDataManager managedObjectContext] sectionNameKeyPath:@"Child" cacheName:nil];
}
但是,在使用上述代码时,我得到了下表:


有人能告诉我如何将“孩子”分组到合适的“家长”之下吗?我意识到数据模型可以分离,这样子实体和父实体就可以分离;但是,我使用的是遗留代码,暂时无法修改数据模型。

我认为您需要使用谓词:

  • 让所有的父母

    NSPredicate*谓词=[NSPredicate predicateWithFormat:@“Child==%@,@NO]

  • 通过父母,找到他们所有的孩子

    NSPredicate*谓词=[NSPredicate谓词格式:@“Child==%@和Parent==%@”,@YES,Parent.Name]


  • 此解决方案产生一个数组构造。不确定,此答案对您有帮助,因为您正在寻找NSFetchedResultsController

    我认为您必须使用谓词来使用排序数组键获取同一父级的子级。有了它,你就可以得到过滤过的数组,比如Alam的子数组或Cain的子数组。你试过
    sectionNameKeyPath:@“ParentName”
    ?@JeckyModi-你能用一个例子解释一下吗?不知道你的意思。@norders-使用ParentName会导致相同的问题,即父母被分组在一起,然后是所有的孩子。谢谢,Marco。是的,关于获取父对象,然后为每个父对象的子对象构建数组构造,您是对的。但是,我正在寻找一个使用NSFetchedResultsController的解决方案。