观看者在离线使用Firebase时挂起

我正在尝试将离线function添加到我们的iOS应用程序(简单来说,这是一个pipe理用户和项目的应用程序),它依赖于Firebase。 这是使用Swift 3.0。 我遵循了指南,做了以下工作:

  1. 在FIRApp.configure()后面添加这个到我的应用程序委托中:

    FIRDatabase.database()。persistenceEnabled = true

  2. 在用户/ userKey和所有用户的项目/ projectKey节点上调用keepSynced(true)。

该应用程序工作正常,而在线(显然),并保持同样良好的离线工作,即使我重新启动它,而断开互联网。 当我在离线状态下创build一个新项目时出现问题。 我使用以下来创build一个新的项目:

let projectKey = FIRDatabase.database().reference(withPath: "projects").childByAutoId().key let logsKey = FIRDatabase.database().reference(withPath: "projects").child(projectKey).child("logs").childByAutoId().key FIRDatabase.database().reference().updateChildValues([ "projects/\(projectKey)/key1" : value1, "projects/\(projectKey)/key2" : [ "subkey1" : subvalue1, "subkey2" : subvalue2 ], "projects/\(projectKey)/key3/\(logKey)" : [ "subkey3" : subvalue3, "subkey4" : subvalue4 ] ]) { error, ref in if error != nil { print("Error") return } } 

在项目创build之后,如果我试图在“projects / projectKey / key1”或者“projects / projectKey / key2”上调用observeSingleEvent,那么一切都很好。 但是,在“projects / projectKey / key3 / logKey”上调用相同的函数永远不会触发块/callback – 只有在连接回来时才会被调用。

我已经启用了FIRDatabase日志logging(确认本地写入发生)寻找提示,但似乎无法找出问题。

有什么我失踪?

注意:使用最新的Firebase iOS SDK(3.5.2)。

编辑:它似乎工作正常,如果我扩大深层链接:

 let projectKey = FIRDatabase.database().reference(withPath: "projects").childByAutoId().key let logsKey = FIRDatabase.database().reference(withPath: "projects").child(projectKey).child("logs").childByAutoId().key FIRDatabase.database().reference().updateChildValues([ "projects/\(projectKey)" : [ "key1" : value1, "key2" : [ "subkey1" : subvalue1, "subkey2" : subvalue2 ], "key3" : [ logKey : [ "subkey3" : subvalue3, "subkey4" : subvalue4 ] ] ] ]) { error, ref in if error != nil { print("Error") return } } 

这可能是Firebase在离线状态下pipe理本地caching状态的一种错误吗? 就好像它不知道使用updateChildValues中的深层链接创build的中间键。