【发布时间】:2019-02-27 21:17:29
【问题描述】:
[免责声明]我亲自发布并回答了这个问题,我自己也在努力解决这个问题,并且相关地,注意到很多人仍然这样做
上下文
我正在开发一个 iOS 移动应用程序,并且 - 对于这个特定项目 - 决定使用 Firebase 实时数据库 作为我的后端基础架构。
问题
当使用.observeSingleEvent(of:with:) 方法查询特定节点的数据时,我总是发现自己检索缓存或旧数据,而不是新更新的数据。
在某些情况下,连续两次调用该方法会检索所需的服务器数据。
尝试
- 在相关节点使用
.keepSynced(true),根据Firebase documentation自动下载这些位置的数据并保持同步,即使引用没有活动的侦听器
【问题讨论】:
-
observeSingleEventOf和磁盘持久性不能很好地协同工作:您的闭包立即从缓存中接收值,而客户端则从数据库中检索最新值并更新其缓存。请在此处查看我的解释,了解原因:stackoverflow.com/questions/34486417/…。解决方案是使用常规监听器:.observe(. -
感谢您的评论@FrankvanPuffelen。我已经多次仔细阅读您的解释,这远远超过了伟大的。尽管如此,尽管这个问题所强调的问题是相同的,但问题的根源却大不相同。
-
在这种情况下,您能否更新您的问题以说明如何重现该问题?请参阅 how to create a minimal, complete, verifiable example 了解如何执行此操作,以及为什么这很有用。
标签: ios swift firebase firebase-realtime-database