在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()
结合predicateForRemindersInCalendars
或predicateForIncompleteRemindersWithDueDateStarting: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) } } }
在循环中,您可以检查更多的条件