Не получать информацию об ошибках из прочитанных данных в firebase с помощью swift - PullRequest
1 голос
/ 22 марта 2020

Мне удалось заставить работать firebase, прочитать данные из базы данных и представить их.

Я фотографирую и заставляю CoreML выяснить, что элемент затем отправляет в базу данных, чтобы вернуть данные об элементе.

Если элемент отсутствует в базе данных I, поэтому хочу, чтобы это было ошибкой, но вместо этого возвращаемое значение просто пустое. Кажется, что блок ошибок Firebase вообще не работает, так как он не работает, если после выполнения первой части кода.

Я также пытался использовать блок do catch, но безуспешно.

Пожалуйста, смотрите прикрепленный код:

    ref.child("items").child("\(self.final)").observeSingleEvent(of: .value, with: { (snapshot) in
    // Get item value

    let value = snapshot.value as? String ?? ""
    print(value)
    self.calorieCount.text = "\(value)"


   }) { (error) in
        print(error.localizedDescription)
        print("error")
        self.calorieCount.text = "Item not found, you will be able to add this soon"

}
}

Может ли кто-нибудь сказать мне, почему ошибочная часть не работает, когда элемент отсутствует в базе данных?

Заранее спасибо!

1 Ответ

0 голосов
/ 23 марта 2020

Отсутствие данных в местоположении не считается ошибкой в ​​Firebase API, поэтому закрытие ошибки не вызывается. Вместо этого ваше обычное закрытие вызывается с пустым DataSnapshot, для которого вы можете проверить с помощью:

ref.child("items").child("\(self.final)").observeSingleEvent(of: .value, with: { (snapshot) in
    if !snapshot.exists() {
        self.calorieCount.text = "Item not found, you will be able to add this soon"
    }
    else {
        let value = snapshot.value as? String ?? ""
        self.calorieCount.text = "\(value)"
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...