IOS:消息不会立即出现在来自 firebase 数据库的 tableview 中

Posted

技术标签:

【中文标题】IOS:消息不会立即出现在来自 firebase 数据库的 tableview 中【英文标题】:IOS : message doesn't appear immediately in tableview from firebase database 【发布时间】:2020-02-06 09:39:21 【问题描述】:

当我添加第一条消息时,它会立即出现在表格视图中,但下一条消息没有出现,我必须返回并返回同一个聊天室才能获得它们

retrieve messages method

my database

viewDidLoad `

   func fetchMessage(key1:String)
    let mydatabase = FIRDatabase.database().reference().child("message")
    let query = mydatabase.queryOrderedByKey().queryEqual(toValue: key1)
        query.observe(.childAdded)  (snapshot) in
            for dict in snapshot.children
                let childsnap = dict as! FIRDataSnapshot
                let dict2 = childsnap.value as! [String: Any]
                var message = chatmssage()
                let body = dict2["MesageBody"]! as? String
                let email = dict2["from"]! as? String
                message.body = body
                message.email = email
                self.chatmessagearr.append(message)
                self.mytableview.reloadData()
            
        


override func viewDidLoad() 
    super.viewDidLoad()
    mytableview.delegate = self
    mytableview.dataSource = self
    self.tabBarController?.tabBar.isHidden = true
    messageTXTF.delegate = self
    mytableview.separatorStyle = .none
    let curID = (user!["id"] as? String)!
    let toID = self.reciever.uid!
    key = (curID < toID ? curID+toID : toID+curID )
    fetchMessage(key1:key!)

【问题讨论】:

您应该将代码添加为文本,而不是添加图像。 @chirag90 ...没关系 【参考方案1】:

您应该在获取完成后从主线程调用 self.myTableView.reloadData()。像这样,

DispatchQueue.main.async 
    self.myTableView.reloadData()

【讨论】:

对不起先生,我在retrieve func的末尾添加了线程但同样的问题

以上是关于IOS:消息不会立即出现在来自 firebase 数据库的 tableview 中的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ios 中接收来自 react-native-firebase 的通知消息

来自 iOS 节点管理员的 Firebase 消息传递

Firebase 云消息推送通知不再出现在 iOS 上

尽管收到了来自服务器的消息,但 Chrome 的 onmessage() 不会在重新连接后立即触发

推送消息无法立即启动服务

iOS:无法解析来自 firebase 的推送通知