ObsetveSingleEvent обработка ошибок - PullRequest
0 голосов
/ 05 июля 2018
userRef.child(userId).observeSingleEvent(of: .value, with: { snapshot in
        //some codes
})

Это мой код для получения некоторых пользовательских данных из базы данных Firebase. Мой вопрос, как получить ошибку, если есть ошибка (например, ошибка сети, тайм-аут запроса, неизвестная ошибка)? НаблюдениеSingleEvent не имеет блока завершения по сравнению с другими (setValue, updateValue и т. Д.)

Я тоже пробовал:

userRef.child(userId).observeSingleEvent(of: .value, with: {(snapshot) in
    // print something
} , withCancel: {(error) in
    // print something
})

все равно не пойдет внутрь с отменой.

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Также как есть observe(of: with: _ withCancel:_), так же есть observeSingleEvent(of: _ with: _ withCancel: _).

Если код с блоком отмены не работает для вас, обновите свой вопрос, чтобы показать, что вы пытались, и четко описать, какое поведение вы ожидали, и какое поведение вы использовали вместо этого.

0 голосов
/ 05 июля 2018

Это то, что я сделал.

let connectedRef = Database.database().reference(withPath: ".info/connected")
    connectedRef.observe(.value, with: { snapshot in
        if let connected = snapshot.value as? Bool, connected {
            print("Connected")
        } else {
            print("Not connected")
        }
    })

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

0 голосов
/ 05 июля 2018

Это то, что вы ищете?

userRef.child(userId).observeSingleEvent(of: .value, with: { (snapshot) in
        print("Worked")           
    }) { (error) in
        print("Didn't")        
    }

Вы также можете сделать еще одну проверку, если вы допустили ошибку в своем наблюдении.

if snapshot.value is NSNull{
     //snapshot is null
} else{
     //Not null
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...