У меня есть фреймворк, который вызывает API, который возвращает мне JSON. Проблема в том, что у меня есть функция внутри моего SDK, которая использует NSURLSession и вызывает DataTaskWithRequest для получения данных. Проблема в том, что моя функция возвращает значение еще до того, как данные будут правильно выбраны. Я попытался использовать обработчик завершения с DataTaskWithRequest и в настоящее время использую цикл while для ожидания получения данных. Есть ли другой возможный способ сделать это
Код
public func getDetails() -> AnyObject {
if Reachability.isConnectedToNetwork()
{
received = false
let baseUrl = "API_URL Here"
let url = NSURL(string: baseUrl)
let request = NSURLRequest(URL: url!)
let session = NSURLSession.sharedSession()
print("Starting the connection")
let task = session.dataTaskWithRequest(request, completionHandler : {
(data, response, error ) in
//Proper JSON Form
do
{
self.JSON = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
}
catch
{
print("Error")
return
}
self.received = true
})
task.resume()
print("Going through the loop")
while(!received)
{
print("Searching")
}
print(JSON)
return JSON
}
else
{
let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
return 0
}
}