我有一个回调作为此函数的一个参数,callback(false)
行Type 'Void' does not conform to protocol 'BooleanLiteralConvertible'
。为什么?我的回调应该返回Bool
,这肯定是
func facebookLoginWithCallback(callback: ((Void) -> (Bool))) -> Void {
let permissions = ["public_profile", "email", "user_friends"]
PFFacebookUtils.logInWithPermissions(permissions, block: {(user: PFUser?, error: NSError?) -> (Void) in
if (user == nil) {
println(error)
callback(false)
} else if ((user?.isNew) == true) {
}
})
}
答案 0 :(得分:2)
是的,你的回调确实会返回Bool
,但不需要任何参数(例如Void
)。
您使用参数false
调用它,该参数无法转换为Void
,因此会显示错误消息。
您可以将回调类型更改为Bool -> Void
,因此需要Bool
并且不会返回值。
答案 1 :(得分:1)
如果您只想返回bool值,请使用以下代码
func facebookLoginWithCallback(callback: (Bool) -> Void) {
let permissions = ["public_profile", "email", "user_friends"]
PFFacebookUtils.logInWithPermissions(permissions, block: {(user: PFUser?, error: NSError?) -> (Void) in
if (user == nil) {
println(error)
callback(false)
} else if ((user?.isNew) == true) {
}
})
}