void函数中出现意外的非void返回值

时间:2015-05-16 18:36:23

标签: ios swift

我正在执行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如何解决这个问题?

2 个答案:

答案 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的完成处理程序。请注意,它没有任何返回类型,因此不要返回任何内容。

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

你想要通过这种回报实现的目标非常模糊,但你不能这样做。