【问题标题】:How I can fix error "No start date has been set"?如何修复错误“未设置开始日期”?
【发布时间】:2021-04-29 13:40:24
【问题描述】:

在常规日历中保存活动时,有时不会保存活动。显示错误:"failed to save event with error: Error Domain = EKErrorDomain Code = 2" No start date has been set. "UserInfo = {NSLocalizedDescription = No start date has been set.}",虽然日期确定正确

func saveTaskInCalendar() {
        let eventStore : EKEventStore = EKEventStore()
        eventStore.requestAccess(to: .event) { (granted, error) in
            if (granted) && (error == nil) {
                let event: EKEvent = EKEvent(eventStore: eventStore)
                DispatchQueue.main.async {
                    event.title = "Test"
                    event.startDate = Date()
                    event.endDate = Date()
                }
                event.calendar = eventStore.defaultCalendarForNewEvents
                do {
                    try eventStore.save(event, span: .thisEvent)
                } catch let error as NSError {
                    print("failed to save event with error : \(error)")
                }
            }
            else {
                print("failed to save event with error : \(String(describing: error)) or access not granted")
            }
        }
    }

如何解决这个错误?

【问题讨论】:

    标签: swift ekeventstore


    【解决方案1】:

    问题是您将设置EKEvent 的属性包装在一个调度异步块中,而您将偶数保存在异步块之外。这可能会导致在您已尝试保存事件之后执行属性设置。

    要么删除DispatchQueue.main.async 调用,因为无论如何它都不是必需的,要么也将保存代码放入异步调度中。

    let event: EKEvent = EKEvent(eventStore: eventStore)
    event.title = "Test"
    event.startDate = Date()
    event.endDate = Date()
    event.calendar = eventStore.defaultCalendarForNewEvents
    do {
        try eventStore.save(event, span: .thisEvent)
    }
    

    DispatchQueue.main.async {
        let event: EKEvent = EKEvent(eventStore: eventStore)
        event.title = "Test"
        event.startDate = Date()
        event.endDate = Date()
        event.calendar = eventStore.defaultCalendarForNewEvents
        do {
            try eventStore.save(event, span: .thisEvent)
        }
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 2016-02-13
      • 2014-12-05
      相关资源
      最近更新 更多