Ios 离线实时数据库查询数据的实现与功能
我目前正在将数据写入实时数据库,如下所示:Ios 离线实时数据库查询数据的实现与功能,ios,swift,firebase,Ios,Swift,Firebase,我目前正在将数据写入实时数据库,如下所示: function writeData { guard let uid = Auth.auth().currentUser?.uid else { return } let databaseRef = Database.database().reference().child("users/\(uid)") let object = [ ... ] as [
function writeData {
guard let uid = Auth.auth().currentUser?.uid else { return }
let databaseRef = Database.database().reference().child("users/\(uid)")
let object = [
...
] as [String: Any]
databaseRef.setValue(object)
}
它工作正常,但我目前正在努力减少数据丢失导致应用程序死机的可能性。为此,我最近浏览了网页,发现了一个名为“离线查询数据”的东西,代码如下:
let scoresRef = Database.database().reference(withPath: "scores")
scoresRef.queryOrderedByValue().queryLimited(toLast: 4).observe(.childAdded) { snapshot in
}
我是否正确地假设,在上面的示例中,最后4次数据写入尝试将被保存,直到再次连接-一旦连接,它们将被上传
如果这是符合我愿望的功能-如何实现它?如何将其连接到我的
writeData()
函数?上面例子中的“分数”指的是什么 如果Firebase客户端未连接到其服务器,则来自该应用程序的任何写入操作始终由Firebase客户端排队。恢复连接后,Firebase客户端将排队写入发送到服务器
当您执行此操作时,Firebase客户端将排队写入操作写入磁盘上的文件。Firebase客户端还将最近读取操作的任何结果写入同一文件。这样,它们也可以在任何应用程序关闭后存活,并且在用户(重新)启动应用程序并建立连接时可用/重试
您显示的代码与排队写入没有任何关系。这:
scoresRef.queryOrderedByValue().queryLimited(toLast: 4).observe(.childAdded) { snapshot in
将侦听器/观察者附加到
scoresRef
以获得4个最高分。如果客户端连接到服务器,这将是最新/最高分数。如果客户端未连接到服务器,但磁盘上有scoresRef
的数据,则这将是客户端上次看到的最新/最高分数。谢谢!因此,我只需将:Database.Database().isPersistenceEnabled=true
添加到didFinishLaunchingWithOptions
即可启用此行为?如果此行为的意思是“将排队写入和最近的风险存储到磁盘,以便在应用程序重新启动后仍能生存”,那么“是的,这确实是由您共享的代码行启用的”。