NSFetchedResultsController创建日期为零的部分

时间:2013-05-09 03:10:12

标签: ios ios6 nsfetchedresultscontroller key-value-coding

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

有没有办法使用sectionNameKeyPath来实现这一目标?如果没有,我应该如何基于零和非零值来划分我的获取结果表?

1 个答案:

答案 0 :(得分: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";
    }