我在我的应用中添加了新功能,可以在手机上设置的默认日历中添加事件。我获得了许可,并准备添加活动。我检查是否有实际的默认日历,但我收到错误:
条件绑定的初始化程序必须具有Optional类型,而不是 'EKCalendar'
现在,defaultCalendarForNewEvents
是一个Optional
(参见下面的定义),使用可选绑定检查它是否为零是完全正常的。我错过了什么?
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()
}
答案 0 :(得分:1)
我在swift.org的Swift讨论论坛上提出了这个问题并得到了答复。因此,根据回复,&#39; defaultCalendarForNewEvents&#39;在Swift 3中被标记为非可选的,并且在Swift 4中被修复了。这就是为什么存在差异:文档显示Swift 4中的声明但是可选绑定在Swift 3上失败了.Hope这有助于有同样问题的人。
我还被告知这个问题没有发布,因为它是一个小小的更新。
答案 1 :(得分:0)
错误告诉您defaultCalendarForNewEvents
实际上不是可选的。也许有一些零合并或其他事情发生在你身上是不可见的。无论如何,如果编译器告诉你它不是可选的,那么就没有必要争取可选的绑定。