我在整个查询中将断点设置为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()
})
数据库结构:
答案 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")
})
}
}