Подтвердить что ты не робот

Неожиданное неволевое возвращаемое значение в функции 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 у меня есть ошибка Unexpected non-void return value in void function Как это исправить?

4b9b3361

Ответ 1

Сделайте это, если вы хотите получить значение после получения ответа.

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

Ответ 2

Последний параметр sendAsynchronousRequest - это обработчик завершения с типом (NSURLResponse!, NSData!, NSError!) -> Void. Обратите внимание, что у него нет никакого типа возврата, поэтому ничего не возвращайте.

Обработчик завершения вызывается каркасом соединения, ему не нужен тип возврата.

Это довольно неясное то, что вы пытаетесь достичь тем, что возвращается, но вы не можете этого сделать.