iOS:predicateForEventsWithStartDate 不会 return 在搜索框外开始的事件

iOS: predicateForEventsWithStartDate does not return events starting outside of search frame

我在下面代码片段中使用的简单示例:

搜索框:2016 年 4 月 15 日15:00pm-18:00pm

在日历中输入的事件

现在使用的方法 returns 我只有一个对象 - 即事件 2。显然我希望同时返回 - 事件 1 和 2。

真不明白为什么会这样!我的代码中遗漏了什么?提前致谢。

int seconds_in_year = 60*60*24*365;
__block
NSDate* currentStart = [NSDate dateWithTimeInterval:0 sinceDate:startTime];
__block
NSDate* currentFinish = [NSDate dateWithTimeInterval:seconds_in_year sinceDate:currentStart];
// use Dictionary for remove duplicates produced by events covered more one year segment
NSMutableDictionary *eventsDict = [NSMutableDictionary dictionaryWithCapacity:1024];

EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
    if (!granted) { return; }

    // enumerate events by one year segment because iOS do not support predicate longer than 4 year !
    while ([currentStart compare:endTime] == NSOrderedAscending) {
        if ([currentFinish compare:endTime] == NSOrderedDescending) {
            currentFinish = [NSDate dateWithTimeInterval:0 sinceDate:endTime];
        }
        NSPredicate *predicate = [store predicateForEventsWithStartDate:currentStart endDate:currentFinish calendars:nil];

        [store enumerateEventsMatchingPredicate:predicate
                                     usingBlock:^(EKEvent *event, BOOL *stop) {

                                         if (event) {
                                             [eventsDict setObject:event forKey:event.eventIdentifier];
                                         }
                                     }];
        currentStart = [NSDate dateWithTimeInterval:(seconds_in_year + 1) sinceDate:currentStart];
    }
    return;
}];

编辑:

如果我尝试另一个事件 3(2016 年 4 月 15 日 14:00pm-19:00pm),那么方法 returns 我整个搜索期间都是日历中的 "event" .相对于之前的情况还是挺头疼的。

如方法名称所示 predicateForEventsWithStartDate 搜索等于或晚于传递日期的 startDates参数。