Сбой при отсутствии фото в Firebase - PullRequest
0 голосов
/ 27 апреля 2018

Я знаю это ... Мое приложение вылетает, потому что оно находит нулевое значение в Firebase. Хотя в XCode есть изображение по умолчанию, у нового пользователя еще нет данных в базе данных Firebase, поэтому развертывание значения nil приведет к неизбежному падению. Как я могу отобразить изображение профиля по умолчанию, пока новый пользователь не выберет одно из своих?

func setupProfile () {

    profile_image.layer.cornerRadius = profile_image.frame.size.width/2
    profile_image.clipsToBounds = true
    if let uid = Auth.auth().currentUser?.uid{
        databaseRef.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
            if let dict = snapshot.value as? [String: AnyObject]
            {
                self.usernameLabel.text = dict["username"] as? String
                if let profileImageURL = dict["pic"] as? String

                {
                    let url = URL(string: profileImageURL)
                    URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
                        if error != nil{
                            print(error!)
                            return
                        }
                        DispatchQueue.main.async {
                            self.profile_image?.image = UIImage(data: data!)
                        }
                    }).resume()
                }
            }
        })
    }
}

1 Ответ

0 голосов
/ 27 апреля 2018

пытались ли вы использовать метод

if snapshot.exists(){
  /// Code when snapshot returns a Value
}
else{
  /// Snapshot has no value 
  /// Here is the crash point 
  /// dont run other operations 
}

Второй вариант как

databaseRef.child("Events").observeSingleEvent(of: DataEventType.value, with: { (snapshot) in

            if snapshot.hasChild(/// Comparison value if you have , Like checking for a Value to verify snapshot is not empty)
            {
                 /// Value found /// Run operations
            }
            else{
                 /// Value not found 
             }

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