【问题标题】:return callback in swift快速返回回调
【发布时间】:2014-11-27 00:32:38
【问题描述】:

我有一个回调作为这个函数的参数之一,在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) {

        }
    })
}

【问题讨论】:

  • "callback" 没有参数,你传入的是布尔值“callback(false)”。这就是错误。

标签: ios swift


【解决方案1】:

是的,您的回调确实返回了 Bool,但它不接受任何参数(即 Void)。

您使用参数false 调用它,该参数无法转换为Void,因此出现错误消息。

您可以将回调类型更改为Bool -> Void,这样它就接受Bool 并且不返回值。

【讨论】:

    【解决方案2】:

    如果你只想返回布尔值,那么使用下面的代码

        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) {
    
            }
        })
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      相关资源
      最近更新 更多