Ошибка при получении календаря по умолчанию, приходит только в первый раз, но после этого работает нормально - PullRequest
0 голосов
/ 17 мая 2018

Я написал код для создания события. Код довольно прост:

    let eventStore : EKEventStore = EKEventStore()
    eventStore.requestAccess(to: .event, completion: {
            granted, error in
            if (granted) && (error == nil) {
                print("granted \(granted)")
                print("error  \(String(describing: error))")

            let event:EKEvent = EKEvent(eventStore: eventStore)
            event.title = title
            event.startDate = startDate
            event.endDate = endDate
            event.notes = "Lecture"
            event.calendar = eventStore.defaultCalendarForNewEvents
            //                eventStore.saveEvent(event, span: EKSpanThisEvent, error: nil)
            guard ((try? eventStore.save(event, span: EKSpan.thisEvent, commit: true)) != nil)else{
                print("error  saving event")
                completion(false)
                return
            }
            print("Saved Event")
        }}

Когда код запускается в первый раз, он выдает эту ошибку:

[EventKit] Ошибка при получении календаря по умолчанию для новых событий: Error Domain = EKCADErrorDomain Code = 1019 "(null)" 2018-05-18 00: 18: 16.586150 + 0500 SevimFahrschuleMobile [11413: 3650672] [EventKit] Идентификатор объекта не предоставлен. Не узнает, существует ли объект.

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

eventStore.requestAccess(to: .reminder) { (<#Bool#>, <#Error?#>) in
        <#code#>
    }

, что звучит для меня совершенно нелогично.

Дайте мне знать, если увидите причину неудачи в первый раз. Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Добавьте следующее в Info.plist :

NSCalendarsUsageDescription
NSRemindersUsageDescription

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...