有人可以清楚地解释.Value,.ChildAdded,.ChildChanged,.ChildRemoved for FIRDataEventType之间的区别吗?

时间:2016-06-21 19:25:24

标签: ios swift firebase firebase-realtime-database

我无法用语言表达。有人可以解释不同FIRDataEventTypes之间的差异以及何时使用它们的例子?

示例(SWIFT):

let queryRef = FIRDatabase.database().reference().child("user")
queryRef.observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in

queryRef.observeEventType(.Value, withBlock: { (snapshot) -> Void in

从测试开始,.Value返回一个对象,而.ChildAdded返回多个;在进行高级查询时.ChildAdded不起作用但.Value有些工作(更深的子节点为空)。

1 个答案:

答案 0 :(得分:10)

tl;dr - Watch this video. It uses the old SDK in Android, but the idea is the exact same even for iOS.

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

每次更新任何数据时,都会触发值事件。这可以是新添加的密钥,删除密钥或更新引用的任何值。 当更改发生时,SDK会发回对象的整个状态,而不是仅发生更改的delta。

儿童添加事件会在每个现有数据中触发一次,snapshot值将是一个单独的记录,而不是像那样的整个列表价值事件。随着更多物品的进入,此事件将随每件物品开启。

删除并更改了子项的工作方式几乎相同。删除某个项目或更改其值时,将在回调中返回单个项目。