我在NSFetchedResultsController's
方法上有问题。我已经阅读了实现,但它似乎没有点击。具体来说,这些方法(来自 Apple 文档):
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [[<#Fetched results controller#> sections] count];
}
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[<#Fetched results controller#> sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[<#Fetched results controller#> sections] objectAtIndex:section];
return [sectionInfo name];
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return [<#Fetched results controller#> sectionIndexTitles];
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
return [<#Fetched results controller#> sectionForSectionIndexTitle:title atIndex:index];
}
我不明白的是sections
andsectionIndexTitles
属性。我在初始化时从未声明过这些属性NSFetchedResultsController
,那么 XCode 如何知道它们以及如何在不崩溃的情况下显示它们?
此外,在该方法
NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:@"<#Cache name#>"];
我不明白如何设置sectionNameKeyPath
. 例如,如果我想创建一个包含已完成和未完成任务的待办事项列表,我如何将它们分为 2 个部分?我需要任务实体中的值吗?这个值是否必须是一个字符串/我是否必须给它一个自定义设置器?
我真的很感激它的帮助!