【问题标题】:NSFetchedResultsController - Add a section with no rowsNSFetchedResultsController - 添加一个没有行的部分
【发布时间】:2014-09-04 21:45:56
【问题描述】:

NSFetchedResultsController 日历样式应用程序 - 知道当您当天没有任何约会/活动时,如何添加一个 0 行的部分,就像日历应用程序一样? 我真的不想放弃使用 NSFetchedResultsController 因为它快速且优化,但我没有想法。

也欢迎提出数据模型建议。

【问题讨论】:

  • 这实际上是一个表格视图或集合视图,而不是获取的结果控制器。您的数据源方法告诉视图哪里有(和没有)数据,这是您要实现您正在寻找的行为的地方。

标签: ios core-data nsfetchedresultscontroller


【解决方案1】:

数据模型解决方案很明显:创建一个Day 实体,用足够的日期填充它(也许是临时创建它们)并将其分配给事件(Day->Event 一对多)。事件仍应具有其自己的开始日期等NSDate 类型的属性 - 仅将 Day 实体用于节标题。

我不建议走那条路。相反,您可以告诉您的datasource 显示适当数量的部分来表示日期,并通过根据indexPath 和开始日期(对于indexPath.row == 0)计算日期来填充部分标题。

您可以使用获取的结果控制器fetchedObjects 属性填充行。你仍然会得到你所追求的大部分优化:

NSPredicate *filter = [NSPredicate predicateWithFormat:
    @"startDate > %@ && startDate < %@", sectionStartDate, sectionEndDate]];
NSArray *events = [self.fetchedResultsController.fetchedObjects
    filteredArrayUsingPredicate:filter];
Event *eventForRow = events[indexPath.row];

节日期将是一天开始和结束时的适当日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多