Написано для Swift 5
Проблема в том, что у вас есть запрос URL
, который Асинхронный .Это означает, что задача не ожидала завершения.
В вашей задаче внутри функции coins
напечатано после того, как она была назначена, после запрос URL.Однако, когда coins
печатается вне функции, оно печатается до того, как было изменено, так как запрос URL еще не завершен .
Чтобы решить эту проблему, вам нужно создать обработчик завершения.Здесь показан базовый:
// Our errors which could occur
enum SomeError: Error { case unknown }
// Function which is ASYNCHRONOUS
func someAsyncFunction(completion: @escaping (Result<Int, SomeError>) -> ()) {
// Temporary for this example
let success = true
let myNum = 3
// Return value if it is a success, otherwise return the error
if success {
completion(.success(myNum))
} else {
completion(.failure(.unknown))
}
}
// Call
someAsyncFunction { (result) in
print("Result: \(result)")
/* PRINT COINS HERE */
}
См. Полное руководство по обработчикам завершения, используя Result
в Swift 5
в hackingwithswift.com
.