Swift iOS Firebase - Если что-то пойдет не так, когда наблюдение за узлом происходит с помощью Cancel: событие запускается только один раз или каждый раз, когда он проходит по дочерним элементам? - PullRequest
0 голосов
/ 25 января 2019

У меня есть ссылка с 3 детьми.Я хочу наблюдать это, используя .childAdded или .value.Событие withCancel: запускается, если что-то идет не так.Поскольку я тестировал, у меня еще не запущен withCancel:, поэтому я задаю этот вопрос.

Если что-то пойдет не так, а withCancel: будет запускаться каждый раз, когдацикл происходит или только один раз в начальный момент запроса?

Например.если .childAdded или .value захватывает первого потомка, и он успешен, то, когда он переходит к захвату второго потомка, возникает проблема, запускается withCancel:, но затем он пытается использовать третьего потомка, который может быть либоуспех или также отменен.Это означает, что у меня определенно будет первый ребенок, у меня определенно не будет второго, но у меня может быть или не быть третьего.

или

Как только будет установлено соединение и снимокпосле закрытия «1017» никогда не получит шанс выстрелить, и я гарантированно получу всех 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 голосов
/ 25 января 2019

Документация гласит, что блок withCancel срабатывает, когда у вас больше нет разрешения на просмотр ссылки. Я не уверен, что вы подразумеваете под «если что-то пойдет не так», но это не было бы делом блока withCancel.

...