Ios 如何监听Firebase任务完成情况?
在这种情况下,他们的Firebase代码分散在控制器中。这使得Firebase返回时可以轻松地重新加载tableview,因为您的Ios 如何监听Firebase任务完成情况?,ios,uitableview,firebase,firebase-realtime-database,swift3,Ios,Uitableview,Firebase,Firebase Realtime Database,Swift3,在这种情况下,他们的Firebase代码分散在控制器中。这使得Firebase返回时可以轻松地重新加载tableview,因为您的reload()代码位于现有的.observe()中 如果Firebase代码在类中,如何处理上述问题?我仍然需要重新加载tableview,但只有在Firebase返回后。看起来是这样的: f.performCompletedQuery() self.tableView.reloadData() f.performCompletedQuery()将执行,但代码路径
reload()
代码位于现有的.observe()
中
如果Firebase代码在类中,如何处理上述问题?我仍然需要重新加载tableview,但只有在Firebase返回后。看起来是这样的:
f.performCompletedQuery()
self.tableView.reloadData()
f.performCompletedQuery()
将执行,但代码路径将继续,而数据仍在从Firebase检索<代码>self.tableView.reloadData()将触发,表将为空(因为Firebase尚未返回)
我想我需要复制Firebase的observe,但在类中公开它,并利用现有的observe?看起来有点复杂。有更好的办法吗?也许只是块、显示和动画?使用完成处理程序来实现这一点。 例如:
func queryOrdered(completion: (_ result: [Any]) -> ()) {
// request here
// getting response check on error
// set completion for returned itmes if success
completion([1, 2, 3])
}
// call the function
queryOrdered { [unowned self] (arr) in
// get returned items
self.myitems = arr
// reload the table on main queue
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
使用完成处理程序来实现这一点。 例如:
func queryOrdered(completion: (_ result: [Any]) -> ()) {
// request here
// getting response check on error
// set completion for returned itmes if success
completion([1, 2, 3])
}
// call the function
queryOrdered { [unowned self] (arr) in
// get returned items
self.myitems = arr
// reload the table on main queue
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
考虑在performCompletedQuery()中添加completionBlock:吗?考虑在performCompletedQuery()中添加completionBlock:吗?不再使用.observe()?什么是
[无主的自我]
?现在开始工作了。唯一的问题是,我不需要完成块的参数,但我不知道如何删除它。你对此有什么想法吗?@4thSpace简单地将void函数作为param,如下所示:func queryOrdered(completion:()->()){completion()},[unowned self]用于省略self的retain循环。你不再使用.observe()?什么是[无主的自我]
?现在开始工作了。唯一的问题是,我不需要完成块的参数,但我不知道如何删除它。你对此有什么想法吗?@4thSpace简单地将void函数作为param,如下所示:func queryOrdered(completion:()->()){completion()},[unowned self]用于省略self的retain循环。