Функция predicateForEventsWithStartDate: Это ошибка?

При использовании функции predicateForEventsWithStartDate, похоже, что возвращенные события лежат в интервале времени около 4 лет. Это ошибка?

Ответ 1

Да, это похоже на ошибку, у меня тоже был такой же опыт. Предикат ForEventsWithStartDate: возвращает только события за промежуток времени 4 года с даты начала. Все остальные события, лежащие вне временного интервала, не будут возвращены.

Ответ 2

Вы можете возвращать события, выбирая интервал (выберите дату начала и дату окончания):

NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:[NSDate date]];
[components setDay:1];
[components setMonth:1];
[components setYear :[components year] - 1 ];
NSDate *startDate = [CURRENT_CALENDAR dateFromComponents:components];

NSDateComponents *EndComponents = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:[NSDate date]];
[EndComponents setDay:1];
[EndComponents setMonth:1];
[EndComponents setYear:[EndComponents year] + 1];
NSDate *endDate = [CURRENT_CALENDAR dateFromComponents:EndComponents];

NSArray *calendarArray = nil;
if(systemVersion < 6.0)
{
     calendarArray = [yourEventStore calendars];
}
else
{
     calendarArray = [yourEventStore calendarsForEntityType:EKEntityTypeEvent];
}
NSPredicate *predicate = [yourEventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:calendarArray];
[arrayOfEvents addObjectsFromArray:[yourEventStore eventsMatchingPredicate:predicate]];