Swift 3中Firebase同步性的解决方法无法正常工作

时间:2017-03-29 01:07:05

标签: ios swift asynchronous firebase firebase-realtime-database

我正在尝试强制某些功能在使用之前完成从Firebase获取信息。虽然我一直在阅读调度小组和完成处理,但我不明白为什么只做下面的工作不起作用:

while (self.expectedPointCount == -1) {
    self.ref?.child("Users").child(self.userID!).child("presetRouteCoordinateCount").observeSingleEvent(of: .value, with:{
            snapshot in
            self.expectedPointCount = snapshot.value as! Int //always zero or greater

    })
        while(self.expectedPointCount == -1){}
}

这将永远运行。

在while循环和Firebase快照例程中插入print语句表明它实际上从未进入Firebase快照例程。但是,当它不在while循环中时,它会进入例行程序。

看起来我必须以艰难的方式去做,但我不明白为什么。

非常感谢!

1 个答案:

答案 0 :(得分:0)

这将是无限循环。尽管Firebase调用是在另一个线程上异步执行的,但它永远不会有机会启动,因为您永远不会在您调用的线程上留下无限循环。