Ваш сервисный звонок асинхронный. Читайте о синхронизации против асинхронных методов.
Средний
Рэй Вендерлих
AF отправил запрос на сервер и коды ниже продолжают работать. Когда ваш ответ придет, тогда успех или сбой блоки начинают работать.
Таким образом, пользовательский объект не назначается до тех пор, пока не будет запущен блок успеха.
Вот решение:
AF.request("http://127.0.0.1:5000/register", method: .post, parameters: params, encoding: JSONEncoding.default).responseString { response in
switch response.result {
case .success:
let user_id = response.result.value
self.user = User(name: name!, email: email!, phone_number: phone_number!, user_id: user_id!)
print(self.user?.name) // <--This print statement works correctly -->
performSegue(withIdentifier: "qrSegue", sender: self)
case .failure:
print("Error")
}
}
И вы можете показывать загрузку на своей странице, ожидая ответа на запрос, и скрывать ее в случае успеха.