Swift iOS Firebase-如果观察节点时出现问题,withCancel:事件只会触发一次还是每次在子节点中循环时触发?

时间:2019-01-25 09:40:39

标签: ios swift firebase observers

我有3个孩子的裁判。我想使用.childAdded.value观察它。如果出现问题,将运行一个withCancel:事件。自从我进行测试以来,我还没有运行withCancel:,所以这就是为什么我问这个问题。

如果出现问题并且withCancel:运行,它会在每次循环发生时运行还是在查询的初始时间运行一次?

例如如果.childAdded.value抓住了第一个孩子并且成功了,那么当它去抓住第二个孩子时,withCancel:会出现问题,但是它将尝试第三个孩子一个孩子,可以是成功的,也可以是取消的。这意味着我肯定会生第一个孩子,我绝对不会生第二个孩子,但我可能会或不会生第三个孩子。

一旦建立连接并且运行了来自闭包的快照,withCancel:就永远不会有开火的机会,我保证会得到所有3个孩子吗?这意味着一旦观察者开始,如果到达第一个孩子,我保证得到第二个和第三个孩子,因为withCancel:一旦开始观察就再也不会触发。相反,如果withCancel:被解雇,甚至还没有生到第一个孩子,那么我将无法获得第二和第三个孩子,而且我什么也得不到。

            // or .value
ref?.observe( .childAdded, with: { [weak self](snapshot) in

         // do something with each snapshot

    }, withCancel: { [weak self](error) in

        // do something based on wether this will fire only once or can fire multiple times
        // for example if only once and I won't get anything then reload the tableView
        // if in can run multiple times then don't reload the tableView until it's finished. I have to add a limit to the query
})

1 个答案:

答案 0 :(得分:0)

documentation指出,withCancel块将在您不再有权查看引用时触发。我不确定“如果出现问题”是什么意思,但这与withCancel块无关。