Я понимаю, что это было задано раньше, но предоставленные ответы просто не отвечали на мой вопрос.Возвращаемое значение из асинхронной функции из синхронной функции в Swift
У меня есть эта синхронная функция, numberOfRowsInSection для UITableView:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var returnValue = 0
self.getFavorites() { result in
returnValue = result.count
}
return returnValue
}
и это getFavorites() функция:
func getFavorites(completionHandler: (([NSString])->())){
let setter = self.xpcConnection?.remoteObjectProxy as FavoritesProtocol
setter.getFavorites({(reply) -> Void in
if var unwrappedReply = reply {
completionHandler(unwrappedReply)
}
})
}
Сейчас функция numberOfRowsInSection возвращает 0, так как функция возвращает до того функция async завершается. Я понимаю эту концепцию.
Что не помогает мне в ответах, которые я нашел до сих пор, так это то, что никто из них не говорит о том, как вы можете вернуть значение, которое вы передаете обратно с помощью вашего completeHandler. У всех их есть очень простые примеры:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
self.getFavorites() { result in
println("Result count: " \(result.count)")
}
}
Отлично, если все, что вы делаете, это печать значения, но мне нужно вернуть значение!
Заранее спасибо