Я задал этот вопрос, который был закрыт вчера, и мне предоставили аналогичный вопрос о том, как реализовать обратный вызов. Я все еще борюсь с этим и обновил свой код, чтобы попытаться использовать его, но мне кажется, что я сталкиваюсь с множеством проблем. Все, что я пытаюсь сделать, это вернуть значение результатов как Array
, чтобы я мог легко манипулировать им позже. Есть ли лучший / более простой способ сделать то, что я пытаюсь выполнить sh?
Функция берет параметр массива из предыдущего представления и использует некоторые значения для вывода pu sh в конечную точку. Результирующий. JSON - это то, что я пытаюсь получить как массив. Текущая ошибка, конечно, результаты не определены при вызове в ViewDidLoad
EDIT : результаты выглядят следующим образом:
["BRLBGN": 0.4699, "BGNBRL": 2.1691]
In ViewDidLoad :
calculateRate(value: codesToConvert, completionHandler: results)
В функции :
func calculateRate(value: [String], completionHandler: (_ results: [String: Any])->()){
let url = URL(string: "domain.com")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
let postString = "pairs=\(value[0] + value[2])&pairs=\(value[2]+value[0])"
print(postString)
request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request) {(data, response, error) in
do {
let jsonResult = try JSONSerialization.jsonObject(with: data!)
let results = jsonResult as! [String: Any]
completionHandler(results)
} catch {
print(error)
}
}
task.resume()
}