Swift - 如何 return 一个 bool 闭包

Swift - How to return a bool closure

我正在尝试编写一个 returns 布尔函数:

func registerForPushNotifications() -> (Bool) -> Void {
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {
        [weak self] granted, error in
        return { granted }
    }
}

但是我得到这个错误:

Cannot convert return expression of type 'Void' to return type '(Bool) -> Void'

我做错了什么?

您的函数 return 类型很奇怪。我认为您想要做的是获得一个回调,其中包含设备是否被授权接收推送通知的结果。

您应该更改以下内容:

func registerForPushNotifications() -> (Bool) -> Void {
   // Your implementation
}

func registerForPushNotifications(completion: (Bool) -> Void) {
   UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] granted, error in
      completion(granted)
   }
}

这样,您可以在确定推送权限后调用 registerForPushNotifications 并使用您希望 运行 的闭包。

registerForPushNotifications { granted in
  // Do something
}