在Swift中从日历中删除提醒

我使用下面的函数来检索我的日历:

func retrieveCalendar() -> EKCalendar? { appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate var myCalendar: EKCalendar? let calendars = appDelegate!.eventStore!.calendarsForEntityType(EKEntityTypeReminder) as! [EKCalendar] let filteredCalendars = calendars.filter {$0.title == "MedicalCalendar"} if filteredCalendars.isEmpty { println("could not find reminder calendar 'MedicalCalendar'") return nil } else { myCalendar = filteredCalendars[0] return myCalendar! } } 

但是,无论何时我将新事件添加到日历中,我都想检查它们是否已经存在。 我发现最简单的方法是删除所有提醒并重新加载新提醒。 我试过了:

 self.retrieveCalendar()?.reset() 

但它不起作用。 我怎样才能从日历中删除提醒?(一次一个或全部一次)

要检查提醒,你必须调用方法fetchRemindersMatchingPredicate()结合predicateForRemindersInCalendarspredicateForIncompleteRemindersWithDueDateStarting:ending:calendars:predicateForCompletedRemindersWithCompletionDateStarting:ending:calendars:

例如,如果您想要删除过去的所有过期提醒,请使用类似的方法

  • 假定属性:

     var calendar : EKCalendar // current calendar let eventStore : EKEventStore // current event store 
  •  func removeExpiredReminders() { let pastPredicate = eventStore.predicateForIncompleteRemindersWithDueDateStarting(nil, ending:NSDate(), calendars:[calendar]) eventStore.fetchRemindersMatchingPredicate(pastPredicate) { foundReminders in let remindersToDelete = !foundReminders.isEmpty for reminder in foundReminders as! [EKReminder] { self.eventStore.removeReminder(reminder, commit: false, error: nil) } if remindersToDelete { self.eventStore.commit(nil) } } } 

在循环中,您可以检查更多的条件