Добрый день, нужна ваша помощь!
Дело в том, что у меня есть задача, и как известно, она выполняется асинхронно, сначала возвращает значение, а после приходит результат задачи, но мне нужно возвратить именно результат, как дождаться выполнения задачи?
Дело в том, что данный код должен вызывается с другого класса и передавать результат.
Помогите, кто чем может.
class func getCountPrinatOrders()->[[String:String]]{
var arrCount = [[String:String]]()
if defaults.string(forKey: defaultsKeys.login) != nil {
let url = URL(string: "https://portal.vaillant-vn.com/apis/apiAppIos.php?action=getCountOrdersForBadge")
let defaults = UserDefaults.standard
let login = defaults.string(forKey: defaultsKeys.login)
let password = defaults.string(forKey: defaultsKeys.password)
let config = URLSessionConfiguration.default
let userPasswordString = "\(login!):\(password!)"
let userPasswordData = userPasswordString.data(using: String.Encoding.utf8)
let base64EncodedCredential = userPasswordData!.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
let authString = "Basic \(base64EncodedCredential)"
config.httpAdditionalHeaders = ["Authorization" : authString]
let session = URLSession(configuration: config)
let task = session.dataTask(with: url!, completionHandler: { (data, response, error) in
guard let data = data else { return }
do{
let jsonResult = try JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
DispatchQueue.main.sync {
let jsonLoans = jsonResult?["badge"] as! [AnyObject]
for jsonLoan in jsonLoans {
arrCount.append(["jornal" : "\(jsonLoan["jornal"] as! String)"])
arrCount.append(["issued" : "\(jsonLoan["issued"] as! String)"])
}
}
}catch{
print(error)
}
})
task.resume()
}
return arrCount
}