У меня есть контроллер вида ProfileViewController, и он содержит UIImageView для отображения аватара пользователя и UILabel для отображения имени пользователя. Однако для отображения аватара и имени пользователя требуется некоторое время. Если я go перейду к другому контроллеру представления и снова открою его, он действительно может показать их немедленно. Кроме того, я попытался распечатать имя пользователя и URL-адрес аватара, и я также могу мгновенно получить значение из Firebase.
Вот код:
func setUp(){
//load avatar and other informations
databaseRef.child("profiles").child(Auth.auth().currentUser!.uid).child("information").observeSingleEvent(of: .value, with: {(snapshot) in
let value = snapshot.value as? NSDictionary
self.username.text = value?["username"] as? String
if let avatarURL = value?["avatar"] as? String {
if let url = URL(string: avatarURL){
let task = URLSession.shared.dataTask(with: url){
(data, response, error) in
if let data = data{
DispatchQueue.main.async {
self.avatar.image = UIImage(data: data)
}
}
}
task.resume()
}
}
})
}