我正在尝试从Firebase获取一些数据。是否知道启用持久性后如何获取最新数据(不是从缓存中获取)?我尝试了keepSynced;我仍然得到过时的数据。这是正确的用法吗?

userRef = FIRDatabase.database().reference().child("<path>")
userRef.keepSynced(true)
userRef.observeSingleEvent(of: .value, with: { snapshot in
   ...stale data here...
})


还是唯一的选择是使用observe而不是observeSingleEvent?我不喜欢观察到我先获取缓存数据,然后事件再次触发服务器中的数据这一事实。因此,通过观察,当我导航至此屏幕时,首先看到一个空白表,然后看到包含陈旧数据的表,然后看到包含最新数据的表。

谢谢。

编辑:

https://stackoverflow.com/a/34487195/1373592-
这篇文章说keeySynced应该工作。但这对我不起作用。我想知道我做错了什么。

最佳答案

我得到一些解释,我认为这可能对您有帮助:


  如果Firebase,带有keepSycned的ObserveSingleEventType将不起作用
  无法按时建立连接。尤其如此
  在appLaunch期间或在appDelegate期间,
  改为提供Firebase连接和缓存的结果。它会
  如果启用了持久性,有时也会不起作用,并且
  watchSingleEvent可能会首先提供缓存的数据。在情况下
  像这样,连续的ObserveEventType是首选,应为
  如果您绝对需要新数据,则使用此选项。


我认为您没有选择使用连续监听器。但是要避免性能问题,为什么当您不再使用监听器时就不要将自己移开。

关于swift - 是否可以在启用observeSingleEvent +持久性的情况下获取最新数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47331559/

10-11 04:34
查看更多