Невозможно сразу загрузить UIImageView и UILabel с данными из Firebase в Swift - PullRequest
0 голосов
/ 07 марта 2020

У меня есть контроллер вида 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()
            }
        }

    })

}

1 Ответ

1 голос
/ 07 марта 2020

Нет способа оптимизировать это, поскольку вы вложили необходимые асинхронные вызовы, что вы можете изменить, это использовать SDWebImage для кэширования изображения для предстоящих посещений этого v c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...