Firebase: quando chamar removeObserverWithHandle rapidamente

A documentação diz que você precisa ligarobserveEventType:withBlock para remover um observador se você não precisar mais dele.

Eu vi amostras onde é chamado dentroViewDidDisAppear. Também encontro algum código Obj-C chamado esse método emdeinit, o que não é necessário no Swift.

No meu aplicativo simples, no entanto, quero que os dados sejam sincronizados enquanto estiverem no aplicativo. Se for esse o caso, eu tenho que ligarobserveEventType:withBlock sempre?

Verifiquei o código de exemplo do Chat-Swift no site do Firebase e não encontreiobserveEventType:withBlock.

Isso significa que está tudo bem em não ligarobserveEventType:withBlock:. se eu quiser que o observador esteja ligado quando o aplicativo estiver em uso?

Obrigado.

ATUALIZAR

Graças a Jay e David. Vejo que faz sentido observar no ViewWillAppear e removê-lo no ViewDidDisappear.

No entanto, estou usando observeEventType para monitorar qualquer alteração de valor no nó e atualizaria a interface do usuário, se houver alguma. Se eu colocá-lo no ViewWillAppear:

 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    ref.observeEventType(.Value, withBlock: { snap in {
      // **update UI if there is any Value change** 
    })
  }

O problema de colocá-lo emviewWillAppear é isso, é chamado toda vez que a exibição é exibida, independentemente da alteração do valor ou não. Por esse motivo, o instantâneo é baixado e minha interface do usuário é atualizada toda vez que eu volto à exibição. Isso se torna contraproducente.

Eu também tenteiChildAdded/ChildRemoved, no entanto, ele retorna apenas o último nó, não o caminho da minha ref:

Por exemplo, se eu adicionar a ref / child1 / child2 / child3 / value,ChildAdded retornaria apenas child3 / value.

Então, se eu tiver que observar Valor, parece que colocá-lo emViewDidLoad é melhor? Dessa maneira, ele obtém o instantâneo uma vez quando a visualização é carregada e é repetido sempre que houver uma alteração, mas não o obtém apenas porque a visualização é exibida.

questionAnswers(3)

yourAnswerToTheQuestion