При использовании функции predicateForEventsWithStartDate, похоже, что возвращенные события лежат в интервале времени около 4 лет. Это ошибка?
Функция predicateForEventsWithStartDate: Это ошибка?
Ответ 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]];