【发布时间】:2015-10-19 08:12:30
【问题描述】:
我正在尝试根据本教程创建提醒,尝试将 Swift 1 更改为 Swift 2 代码:
我收到错误:可选类型的值未解包。
func createReminder() {
if (appDelegate!.eventStore != nil) {
let reminder = EKReminder(eventStore: appDelegate!.eventStore) //value not unwrapped
reminder.title = reminderText.text
reminder.calendar =
appDelegate!.eventStore!.defaultCalendarForNewReminders()
let date = myDatePicker.date
let alarm = EKAlarm(absoluteDate: date)
reminder.addAlarm(alarm)
var error: NSError?
appDelegate!.eventStore!.saveReminder(reminder,
commit: true, error: &error)
if error != nil {
print("Reminder failed with error \(error?.localizedDescription)")
}
}
}
我了解可选值的概念(在运行时此时不能为变量赋值),我不明白的是我在 if 块内,它检查值是否为 nil。因此 appDelegate!.eventStore 在此块中不是 nil,因此不需要解包 (?)。 我也尝试设置“!”在这个变量之后,像这样:
appDelegate!.eventStore!
但它破坏了其他代码,它给出了围绕此代码的错误:
appDelegate!.eventStore!.saveReminder(reminder,
commit: true, error: &error) //extra argumenr 'error' in call
用 do{}catch{} 语句包围它没有帮助..
【问题讨论】:
标签: ios iphone swift2 ios9 xcode7