ObserveSingleEvent 返回旧数据

da1*_*bi3 5 ios firebase swift firebase-realtime-database

我想在应用程序启动时获取所需的应用程序版本号。但是我拿不到正确的钥匙。

我有这个代码要获取。我使用观察单个事件是因为我使用这种方法来检查所需的应用程序版本号。此方法仅在应用开始进行检查时触发。

func getVersion(completionHandler: @escaping (Result<Any?>) -> ()) {

     let ref: DatabaseReference! = Database.database().reference().child("version").child("IOS")

     ref?.observeSingleEvent(of: .value , with: { snapshot in

         if snapshot.exists() {    
            let recent = snapshot.value as!  NSDictionary  
            print(recent)
         }
     })
}
Run Code Online (Sandbox Code Playgroud)

但它正在返回旧的结果?我已isPersistenceEnabled在我的Appdelegate.

这是数据库结构:

在此处输入图片说明

当我使用Database.database().reference().child("version").child("IOS"). snapshot.exists时我没有得到任何结果, 当我使用它时。

我以前拥有的是: - 版本 | IOS - 1.0

当我使用Database.database().reference().child("version"), namely {iOS => 1.0}. 我不明白,因为这是我的旧结构。

Muh*_*san 1

Firebase 实时数据库为活动侦听器同步并存储数据的本地副本。此外,您可以保持特定位置同步。

let scoresRef = Database.database().reference(withPath: "scores")
scoresRef.keepSynced(true)
Run Code Online (Sandbox Code Playgroud)

即使引用没有活动侦听器,Firebase 实时数据库客户端也会自动下载这些位置的数据并使其保持同步。您可以使用以下代码行重新关闭同步。

scoresRef.keepSynced(false)
Run Code Online (Sandbox Code Playgroud)

还没有真正尝试过,但应该有效。