Ваша private func populateUser()
функция - Asyn c, поэтому при попытке доступа к self.profileImage.getUserImage(urlString: self.viewModel.imageUrl)
из viewDidLoad
она может быть недоступна,
. Чтобы исправить это, вы можете закрыть обработчик завершения в функцию, при успехе и неудаче вызовите обработчик завершения, чтобы после выполнения операции
как
ваше удовольствие от инициации c будет закрыто
init(service: UserService,completion:(Bool) -> ()) {
self.service = service
populateUser(completion)
}
и
private func populateUser(_ completion:(Bool) -> ()) {
service.getUserData { result in
switch result {
case .success(let user):
self.user = user
print(self.user)
completion(true)
case .failure(let error):
print(error)
completion(false)
}
}
}
и сейчас
viewModel = UserViewModel(service: services){[unowned self] (success) in
//Check success if you want !!
self.profileImage.getUserImage(urlString: self.viewModel.imageUrl)
self.profileLbl.text = self.viewModel.userName
}
Надеюсь, что это полезно