NSFetchedResultsController 创建日期为零的部分

Posted

技术标签:

【中文标题】NSFetchedResultsController 创建日期为零的部分【英文标题】:NSFetchedResultsController create sections where date is nil 【发布时间】:2013-05-09 03:10:11 【问题描述】:

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

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

【问题讨论】:

【参考方案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";

【讨论】:

我还没来得及测试一下,但我没有忘记你。我会试一试并尽快回复。

以上是关于NSFetchedResultsController 创建日期为零的部分的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 应用程序中调用 performFetch 后,是不是需要手动更新表视图?