В моем приложении я создаю события в EKCalendar. Я получаю события в Интернете, и для обновления событий я хочу сначала удалить календарь (если он существует), заново создать его, а затем разместить там новые события.Удаление и повторное создание EKCalendar
Чтобы создать экземпляр календаря я использую
- (EKCalendar *)calendar {
if (!_calendar) {
NSArray *calendars = [self.store calendarsForEntityType:EKEntityTypeEvent];
NSString *calendarTitle = @"MyCalendar";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title matches %@", calendarTitle];
NSArray *filtered = [calendars filteredArrayUsingPredicate:predicate];
if ([filtered count]) {
_calendar = [filtered firstObject];
} else {
_calendar = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:self.store];
_calendar.title = calendarTitle;
_calendar.source = self.store.defaultCalendarForNewEvents.source;
NSError *calendarErr = nil;
BOOL calendarSuccess = [self.store saveCalendar:_calendar commit:YES error:&calendarErr];
if (!calendarSuccess) {
NSLog(@"Calendar Error = %@", [calendarErr localizedDescription]);
}
}
}
return _calendar;
}
Чтобы удалить календарь, я использую
-(IBAction)deleteCalendar{
NSError *error = nil;
[self.store removeCalendar:_calendar commit:YES error:&error];
}
Оба метода работают индивидуально. Так что, когда я начинаю создание событий, я делаю следующее:
[self deleteCalendar];//delete calendar and its events, in case it already exists
[self calendar];//create calendar
[self importEvents];//put events in calendar
Теперь, что я наблюдаю следующий:
На первом запуске приложения
- в календарь
- события импортируются. (Ожидается, и все работает нормально)
Во время работы приложения я запускаю приведенные выше методы с помощью кнопки. С ниже, для меня озадачивает, результат:
- календарь удаляется (ожидаемый результат)
- не создается календарь (? Почему это мой главный вопрос) .Отель «, если (! _calendar) «часть метода считается FALSE, и ничего не выполняется.
- Метод «importEvents» проходит через свой обычный hoopla без каких-либо очевидных ошибок, хотя я бы ожидал чего-то вроде ошибки «нет источника».
Просьба сообщить об этом.
UPDATE:
Это может быть показателем того, что происходит, но я до сих пор не понимаю:
Через некоторое время события появляются в разные календаря, т.е. а не календарь под названием «myCalendar», но другой календарь на основе iCloud, по-видимому, тот, который в этот момент является defaultCalendarForNewEvents. Однако это тоже не имеет для меня никакого смысла.