NSFetchedResultsController - 添加没有行的部分

时间:2014-09-04 21:45:57

标签: ios core-data nsfetchedresultscontroller

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

欢迎提供数据模型建议。

1 个答案:

答案 0 :(得分:0)

数据模型解决方案显而易见:创建一个Day实体,用足够的日期填充它(可能是临时创建它们)并将其分配给事件(Day-> Event one-to-many)。事件应该仍然有自己的开始日期等类型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];

部分日期将是当天开始和结束时的适当日期。

相关问题