Неожиданное неволевое возвращаемое значение в функции 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
Как это исправить?
Ответы
Ответ 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
. Обратите внимание, что у него нет никакого типа возврата, поэтому ничего не возвращайте.
Обработчик завершения вызывается каркасом соединения, ему не нужен тип возврата.
Это довольно неясное то, что вы пытаетесь достичь тем, что возвращается, но вы не можете этого сделать.