0

我正在使用 NSFetchedResultsController,我想根据实体中的日期字段在表中创建两个部分。我不想根据单个日期进行分区,但我希望有一个日期字段为零的部分和一个日期字段不为零的部分。

有没有办法使用sectionNameKeyPath来实现这一点?如果不是,我应该如何根据 nil 与非 nil 值对获取的结果表进行分区?

4

1 回答 1

1

我认为以下应该有效:

  • 使用您的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";
    }
    
于 2013-05-09T03:37:23.797 回答