Повторное добавление событий в календарь - swift - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу получить событие из базы данных и добавить его в календарь.Я успешно делаю это, однако, всякий раз, когда я открываю приложение, оно повторно добавляет уже добавленные события.

Я пытался игнорировать добавление события, если оно уже существует, но мой код, похоже, неработатьНе уверен, что я делаю здесь неуклюжую ошибку или ошибаюсь.

Буду признателен за любую помощь.Это код, который я использую до сих пор ...

 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")
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...