无法将类型转换为预期的参数类型

cannot convert type to expected argument type

let eventStore = EKEventStore()


// 2
switch EKEventStore.authorizationStatusForEntityType(EKEntityType.Event) {
case .Authorized:
  insertEvent(eventStore)
case .Denied:
  print("Access denied")
case .NotDetermined:
  // 3
  eventStore.requestAccessToEntityType(EKEntityType.Event, completion:
    {[weak self] (granted: Bool, error: NSError!) -> Void in
      if granted {
        self!.insertEvent(eventStore)
      }
      else
      {
        print("Access denied")
      }
  })
default:
  print("Case Default")
}

我收到错误消息:无法将类型“(bool,nserror!) -->void”的值转换为预期的参数类型 'ekeventstorerequestaccescompletionhandler'

在这一行:

eventStore.requestAccessToEntityType(EKEntityType.Event, completion:
        {[weak self] (granted: Bool, error: NSError!) -> Void in

尝试删除 [weak self],在我的例子中,这个有效:

eventStore.requestAccessToEntityType(EKEntityType.Event, completion: {
        (accessGranted: Bool, error: NSError?) in

        if accessGranted && (error == nil) {
            dispatch_async(dispatch_get_main_queue(), { completion(true) })
        } else {
            dispatch_async(dispatch_get_main_queue(), { completion(false) })
        }
    })