我正在尝试检索特定集合中的文档数。我正在通过快照检索它,因为它给了我正确的数字。但是,当我想通过函数返回它时,它返回0
。
然后我尝试进行一些控制台打印,看起来先打印了返回值(1
),然后又返回并打印了请求中的值,我的第二个打印状态是({ {1}})。如何使它返回正确的值(或2
值)?
我的计数器在snapshot.count
的开头声明,如下所示:
ViewController
这是我的代码:
var counter: Int = 0
控制台:
0
2
答案 0 :(得分:0)
当您从Firebase服务器获取数据时,这是一个asynchronous
调用,您需要等待直到收到服务器的响应。
因此,对于您来说,当您调用checkDayNumber
时,方法print(counter) (1)
将在API调用完成之前返回,因此它将返回0
现在您的API调用仍在继续,并且Firebase服务器返回结果后,您的print(self.counter) (2)
将返回2。
因此,要解决此问题,您可以使用closures
。
Here进行了解释。