ios - defaultCalendarForNewEvents 被定义为可选的,但是不能使用可选绑定(bind)来检查它是否为 nil

标签 ios swift swift4 eventkit ekeventstore

我正在我的应用程序中添加新功能,即能够在手机上设置的默认日历中添加事件。我获得许可并准备添加事件。我检查是否有实际的默认日历,但出现错误:

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/

相关文章:

ios - 导出复数字符串以进行本地化

ios - 类级别变量设置为什么总是为零?

ios - 无法将值写入 firebase Swift 3

json - 类型 'String' 的值在强制中不符合 'Any'

ios - 隐藏 View Controller 的导航栏

iphone - 如何使用CGContext iOS在其他设备方向绘制字符串

ios - 错误代码 : Could not load the "image.png" image referenced from a nib in the bundle with identifier "com.bundle.identifier"

swift - 使用 coredata 时,在搜索栏取消按钮后 tableview.reloaddata() 不起作用

iOS 复杂动画协调,如 Android Animator(Set)

ios - Swift 4 参数类型不符合预期类型 'NSItemProviderWriting'