【发布时间】:2018-11-05 17:01:13
【问题描述】:
我正在构建一个提醒应用程序。我正在尝试实现所需的代码来获取保存在日历数据库中的所有提醒。
以下是我的代码的一部分:
override func viewWillAppear(_ animated: Bool) {
// 1
self.eventStore = EKEventStore()
self.reminders = [EKReminder]()
self.eventStore.requestAccessToEntityType(EKEntityType.Reminder) {(granted: Bool, error: NSError?) -> Void in
if granted{
// 2
let predicate = self.eventStore.predicateForRemindersInCalendars(nil)
self.eventStore.fetchRemindersMatchingPredicate(predicate, completion: { (reminders: [EKReminder]?) -> Void in
self.reminders = reminders
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
})
}else{
print("The app is not permitted to access reminders, make sure to grant permission in the settings and try again")
}
} as! EKEventStoreRequestAccessCompletionHandler as! EKEventStoreRequestAccessCompletionHandler
}
我在这部分代码中不断收到错误:
self.eventStore.requestAccessToEntityType(EKEntityType.Reminder) {(granted: Bool, error: NSError?) -> Void in
错误是:
无法将“(Bool, NSError?) -> Void”类型的值转换为预期的参数类型“EKEventStoreRequestAccessCompletionHandler”(又名“(Bool, Optional) -> ()”)
这是在 swift 4.0 上。 关于如何解决这个问题的任何线索?我尝试了所有可用的解决方案,但找不到合适的解决方案。
【问题讨论】:
-
试试
Error而不是NSError -
别忘了移除有害的强制转换
as! EKEventStoreRequestAccessCompletionHandler。
标签: swift