从排序顺序获取Calendar iphone中的所有活动列表

时间:2014-04-15 18:14:01

标签: ios events calendar

我想获得本月或选定月份的事件,但我想按排序顺序(按日期)获取这些事件。所以有可能按顺序排序吗?我使用下面的代码来获取事件。它返回事件但不按排序顺序。

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);
                                              }

                                          }];

请建议。

1 个答案:

答案 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:)];

此方法会生成排序的事件数组,而不是示例中显示的事件字典。