【发布时间】:2012-10-20 22:35:41
【问题描述】:
我正在使用带有 NSFetchedResultsController 的 Core Data 来显示 UITableView 中按日期部分组织的事件列表。一个日期可以有多个事件(分段中的行),如下所示:
Date 1
Event A
Event B
Event C
Date 2
Event D
Date 3
Event E
Event F
在特定日期可以有任意数量的事件。 我希望能够滚动到包含今天日期的部分,或者 - 如果今天没有活动 - 到最近的日期。
我创建一个 NSIndexSet 来查找对象的第一个索引,其中包含的日期晚于今天:
NSDate *dateToday = [NSDate date];
NSIndexSet *datesAfterToday = [[self.fetchedResultsController fetchedObjects] indexesOfObjectsPassingTest:
^BOOL(id obj, NSUInteger idx, BOOL *stop) {
Event *event = (Event *)obj;
NSDate *dateToCheck = event.date;
NSTimeInterval interval = [dateToday timeIntervalSinceDate:dateToCheck];
if (interval <= 0) {
*stop = YES; // Only need first occurrence of date
return YES;
}
return NO;
}];
NSInteger index = [datesAfterToday firstIndex];
这将为我提供今天之后的第一个事件的索引。例如,如果日期 2 是第一个晚于今天的日期,那么上面的代码片段将为我提供索引 3(对于事件 D)。 但是,我希望能够滚动到第 1 节(日期 2),因此我需要节号;在这种情况下,第 1 节。
所以问题是:如果我有绝对索引号,我怎样才能得到这个节号?或者有没有其他方法可以搜索 NSFetchedResultsController 找到节号?
感谢任何帮助。 发送!
【问题讨论】:
标签: uitableview date core-data nsfetchedresultscontroller