简体   繁体   English

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

[英]How to differentiate between event saved through my app and event saved by using calendar app using EventKit?

I have successfully saved the events of my application to local calendar using Eventkit but now I want to delete the events that I have saved using my application only. 我已经使用Eventkit成功地将应用程序的事件保存到本地日历中,但是现在我想删除仅使用应用程序保存的事件。 But the below code give me list of all events saved on calendar but I just want to delete my own saved event. 但是下面的代码为我提供了日历上保存的所有事件的列表,但是我只想删除自己保存的事件。 How can I do that? 我怎样才能做到这一点?

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

When saving events to calendar you can store EKEvent 's eventIdentifier property. 将事件保存到日历时,可以存储EKEventeventIdentifier属性。

And when you want to delete events that were created by you, you can query them by identifiers. 并且,当您要删除自己创建的事件时,可以按标识符查询它们。

Note: store eventIdentfier only after calling eventStore.save(...) method. 注意:仅在调用eventStore.save(...)方法之后才存储eventIdentfier

You can only remove event by comparing Event Title with fetched events: 您只能通过将事件标题与获取的事件进行比较来删除事件:

    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)
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM