如何快速分离Firebase快照侦听器?

时间:2020-03-05 18:17:53

标签: swift google-cloud-firestore

我已经在ViewController的viewWillAppear中编写了以下侦听器;并且无法弄清楚如何删除它。 虽然我知道firebase中的.remove()属性,但我仍然不知道如何在此处完全实现它。我真的很感谢您的帮助。

我还有一个重要的问题:我在下面介绍的VC是水平页面类型滚动视图的一部分。这样,嵌套此VC()和另外2个VC的分页视图容器始终在屏幕上。在viewWillDisappear()方法中分离侦听器是否仍能按预期工作?

TABLES sscrfields.

PARAMETERS country TYPE land1 AS LISTBOX VISIBLE LENGTH 20 USER-COMMAND country_changed.
PARAMETERS carrid TYPE s_carr_id AS LISTBOX VISIBLE LENGTH 20.

AT SELECTION-SCREEN OUTPUT.
  DATA(lt_value) = VALUE vrm_values(
      ( key = 'FR' text = 'France' )
      ( key = 'DE' text = 'Allemagne' ) ).
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'COUNTRY'
      values          = lt_value
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.
  lt_value = switch #( COUNTRY
        when '' then VALUE #( )
        when 'FR' then VALUE #(
              ( key = 'AF' text = 'Air France' )
              ( key = 'TO' text = 'Transavia' ) )
        when 'DE' then value #(
              ( key = 'EW' text = 'Eurowings' )
              ( key = 'LH' text = 'Lufthansa' ) ) ).
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'CARRID'
      values          = lt_value
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

AT SELECTION-SCREEN.
  IF sscrfields-ucomm = 'COUNTRY_CHANGED'.
    carrid = ''.
  ENDIF.

1 个答案:

答案 0 :(得分:1)

在任何受支持的平台上派遣Firestore观察器都可以使用相同的方法:当您附加侦听器时,您将获得一个函数。调用该函数以取消注册观察者。

From the documentation on [detaching a listener](https://firebase.google.com/docs/firestore/query-data/listen#detach_a_listener):

let listener = db.collection("cities").addSnapshotListener { querySnapshot, error in
    // ...
}

// ...

// Stop listening to changes
listener.remove()