Firebase查询未被触发

时间:2016-12-23 16:04:42

标签: swift firebase firebase-realtime-database

我在整个查询中将断点设置为Firebase,所有发生的事情都是下一行的断点被击中(这是第一行),然后没有其他断点。

_CHAT_REF.observeEventType(.Value, withBlock: { snapshot in

知道为什么会这样吗?即使没有数据,查询块内的断点仍然应该被击中,但它们不是。我做了什么:我已经卸载并重新安装Firebase至少10次,使用CocoaPods而不是CocoaPods,按照T的指示。我没有遇到任何编译错误,我正在运行FIRApp.configure ()在我的app委托中。

完整代码(每行断点,没有只调用_CHAT_REF.observe行):

private var _CHAT_REF = FIRDatabase.database().reference().child("chats")

_CHAT_REF.observeEventType(.Value, withBlock: { snapshot in

    self.individualMessages = []

    if snapshot.hasChildren() {
        // Found chats
        for snap in snapshot.children {
            let theChat = Chat(snapshot: snap as! FIRDataSnapshot)

            // The current user belongs to this chat, so add it to individual messages.
            if theChat.sender_id == GlobalEnv.currentUser.id || theChat.receiver_id == GlobalEnv.currentUser.id {
                self.individualMessages.append(theChat)
            }
        }
    } else {
        // No Children
        print("No children found.")
    }
    self.tvContacts.reloadData()
})

数据库结构:

DB Structure on Firebase

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。事实证明,我无法从组织的代理服务器后面读/写数据库。我使用开放式wifi建立了一个设备,它工作正常。

答案 1 :(得分:1)

试试这个,让我知道它是否有所作为。它非常简化,但变量赋值的处理方式不同。

假设您在ViewController类中......

class ViewController: UIViewController {
    var ref: FIRDatabaseReference!

    override func viewDidLoad() {
        super.viewDidLoad()
        ref = FIRDatabase.database().reference()
    }

    func clickAction() {  //just tied to an action in the UI
       let chatsRef = ref.child("chats")
       chatsRef.observeEventType(.Value, withBlock: { snapshot in
         print("Hello, World")
       })
    }
}