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
}
我正在尝试编写一个 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
}