Ios void函数中意外的非void返回值
我正在执行HTTP请求并在我的Ios void函数中意外的非void返回值,ios,swift,Ios,Swift,我正在执行HTTP请求并在我的func中获得响应。它返回响应的值。我是这样做的: NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in println(NSString(data: data, encoding: NSUTF8StringEncoding)) stringResponse =
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
}
}
但是在所有的
返回
s上,我在void函数中遇到了错误意外的非void返回值
如何解决这个问题?sendAsynchronousRequest的最后一个参数是类型为(NSURLResponse!、NSData!、NSError!)->void的完成处理程序
。注意,它没有任何返回类型,因此不返回任何内容
完成处理程序由连接框架调用,它不需要任何返回类型
你试图通过返回来实现的目标非常模糊,但你不能这样做。如果你想要得到响应后的值,就这样做
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.
}
你应该从封口处退出来。否则调用函数应该有一个闭包。我只需要在有闭包的情况下返回值。在这种情况下,您需要有一个闭包。请将其作为一个问题用代码编写让我猜猜:该代码是在另一个返回类型为Bool的方法中编写的?这将不起作用,因为它是一个异步请求。谢谢