predicateForEventsWithStartDate函数:这是一个错误吗?

时间:2012-12-10 07:21:01

标签: iphone objective-c ios ios5

使用predicateForEventsWithStartDate函数时,看起来返回的事件的时间间隔大约为4年。这是一个错误吗?

2 个答案:

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