使用 EventKit 检查并(可能)从 Swift 中的日历中删除事件
Check for and (possibly) remove event from the calendar in Swift using EventKit
我正在寻找一种方法来在添加事件之前检查日历中是否已经存在该事件。如果确实存在,我想在添加新版本之前删除该事件。这是我的 createEvent 函数:
func createEvent(eventStore: EKEventStore, title: String, startDate: NSDate, endDate: NSDate, place:String) {
let event = EKEvent(eventStore: eventStore)
event.title = title
event.startDate = startDate
event.endDate = endDate
event.calendar = eventStore.defaultCalendarForNewEvents
let alarm:EKAlarm = EKAlarm(relativeOffset: -60*60*6)
event.alarms = [alarm]
event.location = place
do {
try eventStore.saveEvent(event, span: .ThisEvent)
savedEventId = event.eventIdentifier
self.eventSaved = true
} catch {
self.eventSaved = false
}
}
基本上我想将其插入到 saveEvent 位上方以避免重复。我宁愿删除现有事件而不是什么都不做的原因是,如果有重复,总是添加最新版本。这很可能是一件简单的事情,但我似乎找不到任何相关信息。
我认为您不需要删除旧活动。
只需检索旧值并将所有值替换为新值即可。
为了实现这一点,您需要在数据模型中存储事件标识符,就像您在 "savedEventId"
示例中所做的那样
所以不要总是像第一行那样创建一个事件:
let event = EKEvent(eventStore: eventStore)
改为这样做:
let event: EKEvent?
// if I have a previous event identifier i can try to retrieve the event
if let eventIdentifier = savedEventId {
event = eventStore.eventWithIdentifier(eventIdentifier)
}
// if i did not find it, then i create a new one
if event == nil {
event = EKEvent(eventStore: eventStore)
}
event.title = title
event.startDate = startDate
event.endDate = endDate
....
我正在寻找一种方法来在添加事件之前检查日历中是否已经存在该事件。如果确实存在,我想在添加新版本之前删除该事件。这是我的 createEvent 函数:
func createEvent(eventStore: EKEventStore, title: String, startDate: NSDate, endDate: NSDate, place:String) {
let event = EKEvent(eventStore: eventStore)
event.title = title
event.startDate = startDate
event.endDate = endDate
event.calendar = eventStore.defaultCalendarForNewEvents
let alarm:EKAlarm = EKAlarm(relativeOffset: -60*60*6)
event.alarms = [alarm]
event.location = place
do {
try eventStore.saveEvent(event, span: .ThisEvent)
savedEventId = event.eventIdentifier
self.eventSaved = true
} catch {
self.eventSaved = false
}
}
基本上我想将其插入到 saveEvent 位上方以避免重复。我宁愿删除现有事件而不是什么都不做的原因是,如果有重复,总是添加最新版本。这很可能是一件简单的事情,但我似乎找不到任何相关信息。
我认为您不需要删除旧活动。 只需检索旧值并将所有值替换为新值即可。
为了实现这一点,您需要在数据模型中存储事件标识符,就像您在 "savedEventId"
示例中所做的那样所以不要总是像第一行那样创建一个事件:
let event = EKEvent(eventStore: eventStore)
改为这样做:
let event: EKEvent?
// if I have a previous event identifier i can try to retrieve the event
if let eventIdentifier = savedEventId {
event = eventStore.eventWithIdentifier(eventIdentifier)
}
// if i did not find it, then i create a new one
if event == nil {
event = EKEvent(eventStore: eventStore)
}
event.title = title
event.startDate = startDate
event.endDate = endDate
....