Ios defaultCalendarForNewEvents定义为可选,但可以';t使用可选绑定检查它是否';零
我正在我的应用程序中添加新功能,这是在手机上设置的默认日历中添加事件的功能。我已获得许可并准备添加事件。我检查是否存在实际的默认日历,但我发现错误: 条件绑定的初始值设定项必须具有可选类型,而不是 “EKCalendar” 现在,Ios defaultCalendarForNewEvents定义为可选,但可以';t使用可选绑定检查它是否';零,ios,swift,swift4,eventkit,ekeventstore,Ios,Swift,Swift4,Eventkit,Ekeventstore,我正在我的应用程序中添加新功能,这是在手机上设置的默认日历中添加事件的功能。我已获得许可并准备添加事件。我检查是否存在实际的默认日历,但我发现错误: 条件绑定的初始值设定项必须具有可选类型,而不是 “EKCalendar” 现在,defaultCalendarForNewEvents是一个可选的(请参见下面的定义),使用可选绑定检查它是否为零应该是非常好的。我错过了什么 defaultCalendarForNewEventsEKEventStore.h中的定义: open var default
defaultCalendarForNewEvents
是一个可选的
(请参见下面的定义),使用可选绑定检查它是否为零应该是非常好的。我错过了什么
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()
}
如果让defaultCalendar=eventStore.defaultCalendarForNewEvents{错误告诉您,defaultCalendarForNewEvents
实际上不是可选的。可能存在一些nil合并或其他对您不可见的情况。无论如何,如果编译器告诉您它不是可选的,那么就没有必要为可选绑定而斗争。我在wift论坛在swift.org上进行了讨论,并得到了回复。因此,根据回复,“defaultCalendarForNewEvents”在swift 3中被意外标记为非可选,并在swift 4中得到了修复。这就是为什么存在差异的原因:文档显示swift 4中的声明,但可选绑定失败,因为我在swift 3上。希望这能帮助那些同样的问题
我还被告知,由于这是一个小的更新,这个问题没有发布说明。这没有意义,编译器不是通过查看属性声明来确定其类型吗?如果是这样,它不应该抱怨可选绑定。@Screerspeaki同意!我想我只是在想在scen后面一定发生了什么您不知道的。为错误消息和类名添加了其他格式。