10

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

4

2 回答 2

8

是的,这似乎是一个错误,我也有同样的经历。predicateForEventsWithStartDate: 仅返回从开始日期起 4 年时间间隔内的事件。位于时间间隔之外的所有其他事件都不会返回。

于 2012-12-12T06:54:07.730 回答
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]];
于 2012-12-10T09:19:20.693 回答