我在每个新下载的聊天记录上附加一个.childChanged
。
当我第一次在Firebase控制台中更新子项的值时,将触发观察器。
任何后续更新都不会触发.childChanged
观察者。
我在所有行上都设置了断点。
注意:
初始数据-> firstName: "Chris"
UpdatedData-> firstName: "Larry"
//chats of the currentUser
var currentUserChats = [Chat]() {
didSet(newValue){
attachChildChangedObserverOn(chat: newValue)
}
}
var observersArray = [String: UInt]() // chatUID:handle
//attach childChange listener on each chat downloaded
func attachChildChangedObserverOn(chat: Chat) {
var handle: UInt = 0
let ref = DDatabaseRReference.chats.reference().child(chat.chatUID).child("users").child(currentUser.userUID)
handle = ref.observe(.childChanged, with: {[weak self] (snapshot) in
self?.observersArray[chat.chatUID] = handle
guard snapshot.exists() else {return}
let chatChanged = chat
})
}