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



我写了一个代码来创建事件。 代码非常简单:

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")
}}

当代码第一次运行时,它会给出此错误:

[事件工具包] 获取新事件的默认日历时出错:错误域=EKCADError域代码=1019"(空)" 2018-05-18 00:18:16.586150+0500 SevimFahrschuleMobile[11413:3650672] [EventKit] 未提供对象 ID。 不会发现对象是否存在。

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

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

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

如果您看到第一次失败的任何原因,请告诉我。 谢谢

Info.plist中添加以下内容:

NSCalendarsUsageDescription NSRemindersUsageDescription