defaultCalendarForNewEvents定义为可选,但不能使用可选绑定来检查它是否为nil

时间:2018-01-09 19:33:36

标签: ios swift swift4 eventkit ekeventstore

我在我的应用中添加了新功能,可以在手机上设置的默认日历中添加事件。我获得了许可,并准备添加活动。我检查是否有实际的默认日历,但我收到错误:

  

条件绑定的初始化程序必须具有Optional类型,而不是   'EKCalendar'

现在,defaultCalendarForNewEvents是一个Optional(参见下面的定义),使用可选绑定检查它是否为零是完全正常的。我错过了什么?

EKEventStore.h中的

defaultCalendarForNewEvents定义:

open var defaultCalendarForNewEvents: EKCalendar? { get }

我在iOS11.2上使用Swift 3.(编辑以更正我正在使用的Swift版本。)

以下是代码:

if let defaultCalendar = eventStore.defaultCalendarForNewEvents { <-- error line
    newEvent.title = "Some Event Name"
    newEvent.startDate = Date()
    newEvent.endDate = Date()
}

2 个答案:

答案 0 :(得分:1)

我在swift.org的Swift讨论论坛上提出了这个问题并得到了答复。因此,根据回复,&#39; defaultCalendarForNewEvents&#39;在Swift 3中被标记为非可选的,并且在Swift 4中被修复了。这就是为什么存在差异:文档显示Swift 4中的声明但是可选绑定在Swift 3上失败了.Hope这有助于有同样问题的人。

我还被告知这个问题没有发布,因为它是一个小小的更新。

答案 1 :(得分:0)

错误告诉您defaultCalendarForNewEvents实际上不是可选的。也许有一些零合并或其他事情发生在你身上是不可见的。无论如何,如果编译器告诉你它不是可选的,那么就没有必要争取可选的绑定。