Swiftui Firebase RTDB 不会在视图中更新
Posted
技术标签:
【中文标题】Swiftui Firebase RTDB 不会在视图中更新【英文标题】:Swiftui Firebase RTDB doesnt update in view 【发布时间】:2021-09-29 13:56:51 【问题描述】:我目前正在尝试在消息传递应用程序中实现阅读功能,到目前为止一切似乎都进展顺利...
当用户打开他未读的聊天时,数据库中的值会发生变化,但是当他返回导航视图时,仍然显示该消息未读。这种情况一直持续到应用重新启动,然后数据似乎已同步。
更新数据库的代码:
func markRead(messageKey : String)
let read = "true"
let ref = self.ref.child("messages").child(messageKey)
ref.updateChildValues(["read":read])
聊天是通过 NavigationView 导航的,也许有某种技巧可以在点击后退按钮后刷新视图?我试过用这个:
self.session.objectWillChange.send()
但是用户仍然需要在底部导航中选择一个不同的选项卡,然后返回,仍然不会更新应用程序中的读取状态...
有什么建议或解决方案吗?提前致谢!
【问题讨论】:
您没有显示任何与您的视图相关的代码。显示ObservableObject
和存储它的视图——否则,这是不可能调试的。
【参考方案1】:
您的视图是否包含一些 tableView 来显示未读消息?
如果是,那么您需要使用方法tableView.reloadData()
在您返回导航视图后使用新信息更新 tableView。
我会把这个方法放在viewDidAppear()
。
我有一个项目,我的 tableView 必须更新取决于用户是否登录/退出。它看起来与您的情况相似,用户确实在 viewController2 中登录,然后返回到 viewController1。因此,我将tableView.reloadData()
放入viewDidAppear()
中以获得viewController1,结果符合预期。
希望对你有帮助。
【讨论】:
你看到那边的swiftui标签了吗?你怎么知道他或她正在使用 UKit?以上是关于Swiftui Firebase RTDB 不会在视图中更新的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:rtdb.initStandalone 不是函数
本地写入带有附加侦听器的 Firebase RTDB 或 Firestore 是不是需要读取操作?
Firebase 引用对象不会保存到 SwiftUI 中的变量