2016-01-27 2 views
0

В моем приложении я создаю события в 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. Однако это тоже не имеет для меня никакого смысла.

ответ

0

ОК, так, что происходит: Я удалил Календарь из магазина, но ссылка на этот календарь на самом деле все еще висела в моем приложении. я решил ее следующим образом:

-(IBAction)deleteCalendar:(id)sender{ 
    NSError *error = nil; 
    if(_calendar){ 
     [self.store removeCalendar:_calendar commit:YES error:&error]; 
    } 
    _calendar = nil; 
} 

Я надеюсь, что это полезно для кого

Смежные вопросы