我正在使用 NSFetchedResultsController,我想根据实体中的日期字段在表中创建两个部分。我不想根据单个日期进行分区,但我希望有一个日期字段为零的部分和一个日期字段不为零的部分。
有没有办法使用sectionNameKeyPath
来实现这一点?如果不是,我应该如何根据 nil 与非 nil 值对获取的结果表进行分区?
我正在使用 NSFetchedResultsController,我想根据实体中的日期字段在表中创建两个部分。我不想根据单个日期进行分区,但我希望有一个日期字段为零的部分和一个日期字段不为零的部分。
有没有办法使用sectionNameKeyPath
来实现这一点?如果不是,我应该如何根据 nil 与非 nil 值对获取的结果表进行分区?
我认为以下应该有效:
date
字段作为第一个排序描述符。sectionIdentifier
并将其用作sectionNameKeyPath
.为仅返回“0”或“1”的瞬态属性定义 getter 函数。在最简单的情况下(没有缓存),它看起来像这样:
- (NSString *)sectionIdentifier
{
if (self.date == nil)
return @"0";
else
return @"1";
}
实现自定义titleForHeaderInSection
:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
if ([[sectionInfo name] isEqualToString:@"0"])
return @"Date is nil";
else
return @"Date is not nil";
}