我正在执行HTTP请求并在func
中获得响应。它返回响应的值。我是这样做的:
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
stringResponse = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
if stringResponse == "0" {
return false
} else if stringResponse == "1" {
return true
} else {
return false
}
}
但在所有return
上我都有错误Unexpected non-void return value in void function
如何解决这个问题?
答案 0 :(得分:17)
如果您在得到回复后想要该值,请执行此操作。
func getResponse(completionHandler : ((isResponse : Bool) -> Void)) {
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
stringResponse = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
if stringResponse == "0" {
completionHandler(isResponse : false)
} else if stringResponse == "1" {
completionHandler(isResponse : true)
} else {
completionHandler(isResponse : false)
}
}
}
现在你可以从以下地方打电话给你。
classObject.getResponse {(isResponse) -> Void in
//Do your stuff with isResponse variable.
}
答案 1 :(得分:0)
sendAsynchronousRequest
的最后一个参数是类型为(NSURLResponse!, NSData!, NSError!) -> Void
的完成处理程序。请注意,它没有任何返回类型,因此不要返回任何内容。
完成处理程序由连接框架调用,它不需要任何返回类型。
你想要通过这种回报实现的目标非常模糊,但你不能这样做。