Как вызвать функцию Firebase в Swift при изменении параметров? - PullRequest
0 голосов
/ 18 июня 2020
func handleOnlineUsersWithParameters(param1: Float, param2: Float) {

    databaseReference.child("users").observe(.childAdded, with: { snapshot in

          if snapshot.value > param1 && snapshot.value < param2 {
                // DO SOMETHING
          }
    })
}

Как вы можете видеть в этой функции, мои операции меняются в зависимости от param1 и param2. Мой вопрос; param1 и param2 всегда могут быть изменены пользователем. Это неправильно, если я вызываю эту функцию при постоянном изменении параметров? Какие есть альтернативы работе с Firebase? Это будет медленно, пока я все время звоню? Спасибо.

1 Ответ

0 голосов
/ 18 июня 2020

Это было бы неправильно, потому что вы бы наблюдали одного и того же ребенка несколько раз. Для того, что я вижу, я бы предложил что-то вроде:

class FirebaseObserver {
    var param1: Float = 0.0
    var param2: Float = 0.0

    let databaseReference: FIRReference // I don't remember the type of that, sorry!
    init() { addObserver() }
    deinit { // Remove observer }

    func addObserver() {
        databaseReference.child("users").observe(.childAdded, with: { snapshot in
            checkAddedChild(value: snapshot.value)
        }
    }

    func checkAddedChild(value: Float) {
        if value > param1, value < param2 {
            // DO SOMETHING
        }
     }

И из вашего основного класса:

class MainClass {
    let firebaseObserver = FirebaseObserver()

    func somethingThatChangedParams() {
        firebaseObserver.param1 = 10
        firebaseObserver.param2 = 20
    }

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

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