2016-08-30 2 views
0

Мне нужно синхронизировать расписание, созданное в приложении iOS, с календарем телефона, а многие - повторяющиеся события.Исключения и изменения iOS EKRecurrenceRule

Для некоторых функций достаточно просто использовать EKRecurrenceRule, но как календар iOS управляет перемещением или удалением одного события в повторяющейся серии?

ответ

2

При создании события ему присваивается идентификатор. Вы создаете повторяющиеся события (как вы знаете), используя объекты EKRecurrenceRule, но идентификатор остается неизменным для всех событий. Вы можете удалить одно событие так:

func deleteEvent(eventIdentifier: String) -> Bool { 
    var successful = false 
    let eventToRemove = self.eventStore.eventWithIdentifier(eventIdentifier) 
    if (eventToRemove != nil) { 
     do { 
      print("deleting single event") 
      try self.eventStore.removeEvent(eventToRemove!, span: .ThisEvent) 
      successful = true 
     } catch { 
      print("Bad things happened") 
     } 
    } 
    else 
    { 
     print("no event with the identifier") 
    } 
    return successful 
} 

Или вы можете удалить все события, как это:

func deleteFutureEvents(eventIdentifier: String) -> Bool { 
    var successful = false 
    let eventToRemove = self.eventStore.eventWithIdentifier(eventIdentifier) 
    if (eventToRemove != nil) { 
     do { 
      print("deleting future events") 
      try self.eventStore.removeEvent(eventToRemove!, span: .FutureEvents) 
      successful = true 
     } catch { 
      print("Bad things happened") 
     } 
    } 
    else 
    { 
     print("no event with the identifier") 
    } 
    return successful 
} 

Вы можете обновить одного или всех событий в подобной манере, используя идентификатор события.