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_code
、data
的类型,并确定不应该有return值。例如,您可以将其作为函数参数(您想要的)传递,或将其分配给具有适当类型提示的变量。
使用 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_code
、data
的类型,并确定不应该有return值。例如,您可以将其作为函数参数(您想要的)传递,或将其分配给具有适当类型提示的变量。