如何区分通过我的应用保存的事件和通过使用EventKit的日历应用保存的事件?

时间:2019-05-17 06:55:03

标签: ios swift4 eventkit ekcalendar

我已成功使用Eventkit将应用程序的事件保存到本地日历,但是现在我想删除仅使用应用程序保存的事件。 但是下面的代码为我提供了日历上保存的所有事件的列表,但是我只想删除自己保存的事件。我该怎么办?

 let predicate = eventStore.predicateForEvents(withStart: start, end: endDate, calendars: [calendar])       
 let events = eventStore.events(matching: predicate)

2 个答案:

答案 0 :(得分:2)

将事件保存到日历时,您可以存储EKEvent的{​​{3}}属性。

当您要删除自己创建的事件时,可以按标识符查询它们。

注意:仅在调用eventIdentfier方法之后存储eventStore.save(...)

答案 1 :(得分:0)

您只能通过将事件标题与获取的事件进行比较来删除事件:

    var allEvents: [EKEvent] = []

    let eventStore = EKEventStore()
    let calendars = eventStore.calendars(for: .event)

    for calendar in calendars {

        // end date (about) one year from now
        let endDate = Date(timeIntervalSinceNow: 60*60*24*365)

        let predicate = eventStore.predicateForEvents(withStart: Date(), end: endDate as Date, calendars: [calendar])

        let events = eventStore.events(matching: predicate)

        allEvents.append(contentsOf: events)

    }

    for event in allEvents {
        print(event.title, "in", event.calendar.title)
    }