使用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)
)
})
答案 0 :(得分:1)
有several ways来声明或使用闭包。你正在寻找的最简单的可能是:
{ status_code, data in
println(status_code)
}
这需要以这样的方式使用,即编译器可以推断出status_code
,data
的类型,并确定不应该有返回值。例如,您可以将其作为函数参数(您想要的)传递,或者将其分配给具有适当类型提示的变量。