我想获得本月或选定月份的事件,但我想按排序顺序(按日期)获取这些事件。所以有可能按顺序排序吗?我使用下面的代码来获取事件。它返回事件但不按排序顺序。
NSPredicate *predicate = [eventStore predicateForEventsWithStartDate:currentStart endDate:currentFinish calendars:nil];
[eventStore enumerateEventsMatchingPredicate:predicate
usingBlock:^(EKEvent *event, BOOL *stop) {
if (event) {
[eventsDict setObject:event forKey:event.eventIdentifier];
// NSLog(@"event.eventIdentifier %@",event.eventIdentifier);
}
}];
请建议。
答案 0 :(得分:1)
根据文档(Calendar and Reminders Programming Guide),有一个特别说明:从日历数据库中检索事件不一定按时间顺序返回事件。
解决方案是使用内置选择器compareStartDateWithEvent:
,可用于对事件数组进行排序。因此,代码可以更改为:
NSMutableArray *eventsArray = [[NSMutableArray alloc] init];
[eventStore enumerateEventsMatchingPredicate:predicate
usingBlock:^(EKEvent *event, BOOL *stop) {
if (event) {
[eventsArray addObject:event];
}
}];
NSArray *sortedEvents = [eventsArray sortedArrayUsingSelector:@selector(compareStartDateWithEvent:)];
此方法会生成排序的事件数组,而不是示例中显示的事件字典。