【问题标题】:Firebase added/removed/changed children listener using SwiftFirebase 使用 Swift 添加/删除/更改子侦听器
【发布时间】:2019-09-23 01:36:57
【问题描述】:

官方Firebase Documentation表示:

已添加子项

EventHandler ChildAdded

相对于该位置添加子节点时引发的事件。

注册一个处理程序以观察何时添加相对于此的子级 查询对象。每次添加子节点时,您的处理程序 将使用数据的不可变快照调用。

ChildRemoved

EventHandler ChildRemoved

当子节点被移除时引发的事件 位置。

注册一个处理程序以观察子项何时被删除 这个查询对象。每次删除子节点时,您的 将使用数据的不可变快照调用处理程序。

ChildChanged

EventHandler ChildChanged

当子节点相对于此发生更改时引发的事件 位置。

注册一个处理程序以观察与此相关的孩子的变化 查询对象。每次更改子节点时,您的处理程序 将使用数据的不可变快照调用。

到目前为止,我成功地使用了 ChildRemoved 和 ChildAdded,它们工作稳定,对我正在做的事情没有任何麻烦。特别是,这两个监听器是独立的,也就是说:保证其中一个触发的动作不会触发另一个触发。因此,我不必进行任何同步或调度来解决冲突。

我的问题是:这三种侦听器类型是否相互独立?

也就是说:

  1. 对于任何给定的操作,我保证三个侦听器中的一个,最多一个会触发。
  2. 只有 ChildAdded 在首次建立侦听器时触发。其他两种侦听器类型则没有。

关于文档的注释,如果 ChildChanged 的​​文档将指定“childChanged”的含义,它将解决歧义:它是否包括添加/删除/移动/编辑孩子,还是只专注于编辑给现有的孩子?

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    这些事件中的每一个都是处理跨客户端数据同步的特定方式。

    • .childChanged

      每当有变化时都会被调用

    所以如果你有一个像下面这样的实时数据库:

    /store/<random-number-inserted-by-firebase-1>/name/store-1
    /store/<random-number-inserted-by-firebase-1>/location/street-1
    /store/<random-number-inserted-by-firebase-1>/items/0/name/name-1
    /store/<random-number-inserted-by-firebase-1>/items/0/type/type-1
    /store/<random-number-inserted-by-firebase-1>/items/1/name/name-2
    /store/<random-number-inserted-by-firebase-1>/items/1/type/type-2
    /store/<random-number-inserted-by-firebase-2>/name/store-2
    /store/<random-number-inserted-by-firebase-2>/location/street-2
    

    您一起在“/store”上启动 childAdded、childChanged 和 childRemoved 观察者。

    如果您将 /store/&lt;random-number-inserted-by-firebase-1&gt;/items/0/type/type-1 更改为 /store/&lt;random-number-inserted-by-firebase-1&gt;/items/0/type/new-type-1,您的 childChanged 回调函数将收到一个字典 ["random-number-inserted-by-firebase-1": ["name": "store-1", "location": "street-1", "items": [["name": "name-1", "type": "new-type-1"], ["name": "name-2", "type": "type-2"]] .childAdded 侦听节点中的任何更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-08
      • 2019-01-24
      • 1970-01-01
      • 2018-04-26
      相关资源
      最近更新 更多