我看了一些示例代码和apple文档,看来fetchedResultsController总是有一个节数。
如何让它返回两个部分?
因为真正的问题是,我正在做一个iOS To-do应用程序。
已完成/待办事项列表,保存在核心数据中,在UITableview
中显示为两个部分。
但是只有一个fetchedResultsController,如何让它支持两个部分?
这是官方示例代码,我不知道如何更改此内容。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSInteger count = [[fetchedResultsController sections] count];
if (count == 0) {
count = 1;
}
return count;
}
答案 0 :(得分:4)
构造FetchedResultsController时需要提供sectionNameKeyPath
。在您的情况下,如果您的实体具有该属性,则可以是finished
。
更新
您可以像这样初始化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];