Я хочу получить событие из базы данных и добавить его в календарь.Я успешно делаю это, однако, всякий раз, когда я открываю приложение, оно повторно добавляет уже добавленные события.
Я пытался игнорировать добавление события, если оно уже существует, но мой код, похоже, неработатьНе уверен, что я делаю здесь неуклюжую ошибку или ошибаюсь.
Буду признателен за любую помощь.Это код, который я использую до сих пор ...
let eventStore: EKEventStore = EKEventStore()
eventStore.requestAccess(to: .event) { (granted, error) in
if granted && error == nil {
print("granted to calendar: \(granted)")
print("error: \(error)")
var event: EKEvent = EKEvent(eventStore: eventStore)
var savedEventId : String = ""
event.title = title
event.notes = description
event.startDate = startDate
event.endDate = endDate
event.calendar = eventStore.defaultCalendarForNewEvents
let predicate = eventStore.predicateForEvents(withStart: startDate, end: endDate, calendars: nil)
let existingEvents = eventStore.events(matching: predicate)
let eventAlreadyExists = existingEvents.contains(where: {event in self.title == event.title && event.startDate == startDate && event.endDate == endDate})
if eventAlreadyExists {
let alert = UIAlertController(title: "Event Already Exists", message: "Event Already Exists in Calendar", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated: true, completion: nil)
print("event already exists")
} else {
// Event doesn't exist yet, add it to calendar
do {
try eventStore.save(event, span: .thisEvent)
savedEventId = event.eventIdentifier
print("Event Added")
} catch {
print("Error occurred")
}
}
}
}