我正在我的应用程序中添加新功能,即能够在手机上设置的默认日历中添加事件。我获得许可并准备添加事件。我检查是否有实际的默认日历,但出现错误:
Initializer for conditional binding must have Optional type, not 'EKCalendar'
现在,defaultCalendarForNewEvents
是一个Optional
(见下面的定义)并且使用可选绑定(bind)来检查它是否为 nil 应该是完全没问题的。我错过了什么?
defaultCalendarForNewEvents
EKEventStore.h 中的定义:
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()
}
最佳答案
我在 swift.org 的 Swift 讨论论坛上提出了这个问题并得到了回复。因此,根据响应,“defaultCalendarForNewEvents”在 Swift 3 中被意外标记为非可选,并且在 Swift 4 中已修复。这就是存在差异的原因:文档显示 Swift 4 中的声明,但可选绑定(bind)失败,因为我在 Swift 上3. 希望这对遇到同样问题的人有所帮助。
我还被告知这个问题没有发布说明,因为它是一个小更新。
关于ios - defaultCalendarForNewEvents 被定义为可选的,但是不能使用可选绑定(bind)来检查它是否为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48175452/