Swift回调内联函数用法

时间:2015-04-28 19:45:55

标签: swift callback

使用Swift我可以进行如下回调:

userService.validateToken("6beba35f", success: onSuccess, failure: onFailure)

func onSuccess(status_code: Int, data: String)
{
    var dd : String = ""
}

func onFailure(status_code: Int, data: String)
{
    var dd : String = ""

}

但我希望功能与呼叫在同一行:

示例1:

userService.validateToken("6beba35f",
        success: (Int, String) -> ()
            {
        },
        failure: (Int, String) -> ()
            {
    })

示例2:

userService.validateToken("6beba35f",
        success: (Int, String)
            {
        },
        failure: (Int, String)
            {
        })

都会出错。我认为我接近示例1,但它一直给我一个错误“预期,分隔符”,当我有它添加“,”

success: (Int, String), -> () 但错误一直说“预期,分隔符”

关于解决方案的任何想法?

包含功能

func validateToken(token: String, success: (Int, String) -> Void, failure: (Int, String) -> Void)
{
    if(Network.isOnline())
    {
        var url: String = Commons.plistValue("Base URL") + "/security/" + token

        Alamofire.request(.GET, url)
            .responseJSON { (request, response, json, error) in

                let jsonData: JSON = JSON(json!)
                let statusCode: Int = response!.statusCode

                if(statusCode == 202)
                {
                    success(statusCode, jsonData["status"]["message"].stringValue)
                }
                else
                {
                    failure(statusCode, jsonData["status"]["message"].stringValue)
                }
            }
    }
    else
    {
        failure(-1, "No Internet Connection")
    }

}

用法修复

    userService.validateToken("6beba35f",
        success: { status_code, data in
            (
                println(status_code)
            )

        },
        failure: { status_code, data in
            (
                println(status_code)
            )
    })

1 个答案:

答案 0 :(得分:1)

several ways来声明或使用闭包。你正在寻找的最简单的可能是:

{ status_code, data in
    println(status_code)
}

这需要以这样的方式使用,即编译器可以推断出status_codedata的类型,并确定不应该有返回值。例如,您可以将其作为函数参数(您想要的)传递,或者将其分配给具有适当类型提示的变量。