使用predicateForEventsWithStartDate函数时,看起来返回的事件的时间间隔大约为4年。这是一个错误吗?
答案 0 :(得分:8)
是的,这似乎是一个错误,我也有同样的经历。 predicateForEventsWithStartDate:仅返回从开始日期起4年内的时间间隔内的事件。在时间间隔之外的所有其他事件都不会被退回。
答案 1 :(得分:0)
您可以通过选择间隔(选择开始日期和结束日期)来返回事件:
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]];