我面对我时,API调用之前启动活动指示灯和后停止的问题,但是我无法做正确,如果我填写的TableView与.childAdded。由于.childAdded仅在添加子项时才会调用,所以我的活动指示符始终处于加载状态。例如:火力地堡.childAdded和活动指示灯
func parseData() {
self.activityIndicator.startAnimating()
DataService.instance.SOME_DATA.observe(.childAdded, with: { (snapshot) in
if let snapshot = snapshot.value as? Dictionary<String, Any> {
let data = someData(data: snapshot)
self.array.append(data)
}
DispatchQueue.main.async {
self.tableView.reloadData()
self.activityIndicator.stopAnimating()
}
})
}
所以基本上如果没有.childAdded任何值将不会被调用,活动指示灯将永远不会停止,因为停止,只有当的tableView被重新加载。 可以请一些建议如何正确地做到这一点?非常感激。
基础上,建议答案有些更新:
我给基于聊天应用为例,它会更容易理解。 我有以下的数据库结构:
user_messages
unique_user_id
unique_user_chat_id
unique_message_1
unique_message_2
unique_message_3
unique_message_4
messages
unique_message_1
text...
unique_message_2
text...
unique_message_3
text...
unique_message_4
text...
我有2个视图控制器和每个具有的TableView
父视图控制器获取所有unique_user_chat_id并且当客户端然后按所选择的聊天,第二视图控制器从'消息'对象中填充所有孩子。正如你看到childAdded
.value的在“消息”对象获取unique_user_chat_id,独生子女.childAdded
是的,我能做到这一点,并从第一次看它会工作,但如果用户将连接到互联网的问题?动画将开始,API将不会被调用,动画将在2秒内停止(以延迟为例)。 – Sargot
@Sargot我修改了我的答案。 –
非常感谢您的帮助!你能否根据你的回答检查我更新的问题,并告知我是否做得正确?另外我不确定我应该拨打哪个动画? – Sargot