Я получаю следующую ошибку при первом запуске моего приложения в приложении iOS7, которое я пытаюсь интегрировать с существующим проектом, и не могу выяснить, как устранить эту ошибку.Календарь iOS7 - предикатный вызов календарного демона не удался: Ошибка домена = EKCADErrorDomain Code = 1013
«Predicate вызов календарь демон не удалось: Ошибка домена = EKCADErrorDomain Code = 1013»
код, который вызывает ошибку при первом запуске приложения является:
NSMutableArray *events = [NSMutableArray arrayWithArray:[self.eventStore eventsMatchingPredicate:predicate]];
мне нужно делать проверьте, не является ли eventStore (в последней функции) пустым перед использованием инструкции предиката?
Функция определение приведено ниже:
Эта функция гарантирует, что пользователь предоставил разрешение на доступ к календарю.
// Prompt the user for access to their Calendar
-(void)requestCalendarAccess
{
if([self.eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
[self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
if (granted)
{
// The user has granted access to their Calendar; let's populate our UI with all events occuring in the next 24 hours.
[self accessGrantedForCalendar];
}
}];
}
}
Функция, приведенная ниже, вызывается при предоставлении разрешения.
// This method is called when the user has granted permission to Calendar
-(void)accessGrantedForCalendar
{
// Let's get the default calendar associated with our event store
self.defaultCalendar = PierceCalendar;
// Enable the Add button
self.addButton.enabled = YES;
// Fetch all events happening in the next 24 hours and put them into eventsList
self.eventsList = [self parseEventsByMonth];
}
Первая строка функции вызывает функцию fetchEvents, содержащую оператор, вызывающий ошибку.
-(NSMutableArray *) parseEventsByMonth
{
NSMutableArray *allPierceEvents = [self fetchEvents];
....
return parsedEventsByMonth;
}
Эта функция выполняет оператор ([self.eventStore eventsMatchingPredicate: сказуемое]), что вызывает ошибку при первом запуске приложения.
// Fetch all events happening in the next 24 hours
- (NSMutableArray *)fetchEvents
{
NSMutableArray *pierceEvents = [[NSMutableArray alloc] init];
//Create the end date components
NSDateComponents *oneYearAgoComponents = [[NSDateComponents alloc] init];
oneYearAgoComponents.year = -1;
NSDate *startDate = [[NSCalendar currentCalendar] dateByAddingComponents:oneYearAgoComponents
toDate:[NSDate date]
options:0];
NSDateComponents *oneYearFromNowComponents = [[NSDateComponents alloc] init];
oneYearFromNowComponents.year = 1;
NSDate *endDate = [[NSCalendar currentCalendar] dateByAddingComponents:oneYearFromNowComponents
toDate:[NSDate date]
options:0];
// We will only search the default calendar for our events
NSArray *calendarArray = [self.eventStore calendarsForEntityType:EKEntityTypeEvent];
// Create the predicate
NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate
endDate:endDate
calendars:calendarArray];
// Fetch all events that match the predicate
NSMutableArray *events = [NSMutableArray arrayWithArray:[self.eventStore eventsMatchingPredicate:predicate]];
for (EKEvent *event in events)
{
if (event.calendar == PierceCalendar) {
[pierceEvents addObject:event];
}
}
return pierceEvents;
}