如何让NSFetchedResultsController返回更多部分?

时间:2013-06-25 12:51:18

标签: ios core-data nsfetchedresultscontroller

我看了一些示例代码和apple文档,看来fetchedResultsController总是有一个节数。

如何让它返回两个部分?

因为真正的问题是,我正在做一个iOS To-do应用程序。 已完成/待办事项列表,保存在核心数据中,在UITableview中显示为两个部分。

但是只有一个fetchedResultsController,如何让它支持两个部分?

这是官方示例代码,我不知道如何更改此内容。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSInteger count = [[fetchedResultsController sections] count];

    if (count == 0) {
        count = 1;
    }

    return count;
}

1 个答案:

答案 0 :(得分:4)

构造FetchedResultsController时需要提供sectionNameKeyPath。在您的情况下,如果您的实体具有该属性,则可以是finished

Documentation

更新

您可以像这样初始化NSFetchedResultsController:

NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:manangedObjectContext sectionNameKeyPath:@"category" cacheName:nil];

确保sortDescriptors中的fetchRequest提供与sectionNameKeyPath相同的排序。

您可以像这样访问该部分的名称:

id<NSFetchedResultsSectionInfo> sectionInfo = fetchedResultsController.sections[section];
NSString *sectionTitle = [sectionInfo name];