Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios void函数中意外的非void返回值_Ios_Swift - Fatal编程技术网

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

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 =

我正在执行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
        }
    }

但是在所有的
返回
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的方法中编写的?这将不起作用,因为它是一个异步请求。谢谢