Swift 回调内联函数用法

Swift callback inline function usage

使用 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 很接近,但它一直给我一个错误 "Expected , seperator",当我添加“,”

success: (Int, String), -> () 但错误一直在说 "Expected , separator"

对解决方案有什么想法吗?

包含函数

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

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

{ status_code, data in
    println(status_code)
}

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