具有一对多关系的NSFetchedResultsController

时间:2013-08-15 15:47:34

标签: iphone ios core-data

我希望在UITableViewController中显示核心数据模型的数据。 Model有两个实体,具有一对多的关系。我希望来自许多实体的项目成为行,按行划分为多个部分。如果没有行,我仍然希望显示节标题。

我有一个工作NSFetchedResultsController表仅适用于多个表,但我需要将其扩展为一对多关系。我没有运气做这项工作,也没有找到任何关于如何做到这一点的例子。

该表格将显示所有项目,而不是子集。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

由于您未提供有关您使用的模型对象的任何详细信息,因此我的示例将使用以下模型。

Library <-->> Book

我建议做的第一件事是查看NSFetchedResultsController的文档,特别是initWithFetchRequest:managedObjectContext:sectionNameKeyPath:cacheName:。它告诉您需要了解的有关将数据提取到各个部分的所有信息。

重要的是,第一个排序描述符必须返回与sectionNameKeyPath类似的顺序。

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Book"];

NSSortDescriptor *librarySort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSSortDescriptor *bookSort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
[fetchRequest setSortDescriptors:@[librarySort, bookSort]];

NSFetchedResultsController *controller = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                                             managedObjectContext:context
                                                                               sectionNameKeyPath:@"library.name"
                                                                                        cacheName:nil];