在void函数中意外的非void返回值

我正在做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 s我有错误Unexpected non-void return value in void function如何解决这个问题?

做这个,如果你想得到回应后的价值。

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

sendAsynchronousRequest的最后一个参数是types为(NSURLResponse!, NSData!, NSError!) -> Void的完成处理程序。 注意它没有任何返回types,所以不要返回任何东西。

完成处理程序由连接框架调用,它不需要任何返回types。

这是很不明确的,你试图通过这样的回报,但你不能这样做。