获取默认日历时出错,仅在第一次出现,但在此之后工作正常

时间:2018-05-17 19:27:41

标签: ios swift eventkit

我已经编写了一个代码来创建一个事件。 代码很简单:

    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]获取新事件的默认日历时出错:错误域= EKCADErrorDomain代码= 1019"(null)"   2018-05-18 00:18:16.586150 + 0500 SevimFahrschuleMobile [11413:3650672] [EventKit]未提供对象ID。不知道对象是否存在。

但是当我再次运行此代码时,它会起作用。 我没有得到。 这里有类似的问题,但解决方案是获得提醒的授权,然后保存事件,即

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

这对我来说听起来完全不合逻辑。

如果您发现第一次失败的原因,请告诉我。 感谢

1 个答案:

答案 0 :(得分:0)

Info.plist 中添加以下内容:

  

NSCalendarsUsageDescription
  NSRemindersUsageDescription