gpt4 book ai didi

ios - Firebase 下载相同的数据

转载 作者:行者123 更新时间:2023-11-30 13:36:16 25 4
gpt4 key购买 nike

我在 swift 中使用 firebase,我在 viewDidAppear: 中调用监听器:正如文档中所写,它不应该再次下载相同的数据,但现在每次 View 出现时都会显示相同的数据。

 override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)
getData()
self.messagesRef.keepSynced(true)
}
func getData(){
messagesRef.observeEventType(.ChildAdded) { (mesData: FDataSnapshot!) -> Void in

let messageDict = mesData.value as! NSDictionary

let key = mesData.key

self.likedRef = self.ref.childByAppendingPath("likedMessages/\(currentUser.uid)/\(key)")

self.likedRef.observeSingleEventOfType(.Value) { (likedFd: FDataSnapshot!) -> Void in
if likedFd.value is NSNull{
let liked = false
let message = Message(message: messageDict, key: key, liked: liked, topicKey: self.topic.key)
self.messages.append(message)
self.messages.sortInPlace{$0.createdAt.compare($1.createdAt) == .OrderedDescending}

}
else{
let liked = likedFd.value as! Bool
let message = Message(message: messageDict, key: key, liked: liked, topicKey: self.topic.key)
self.messages.append(message)
self.messages.sortInPlace{$0.createdAt.compare($1.createdAt) == .OrderedDescending}
}
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.messagesTableView.reloadData()
}
self.likedRef.keepSynced(true)
}

print(mesData.value)
}
}

最佳答案

如果您将第一个监听器添加到某个位置,Firebase 将下载该位置的当前数据并开始同步更改。它将在内存中保留可用数据的副本。

如果您向该位置添加第二个监听器,而第一个监听器仍处于事件状态,Firebase 将不会重新下载数据。我刚刚快速验证了这一点http://jsbin.com/foduxun/edit?js,console .

如果您在附加第二个监听器之前删除第一个监听器,Firebase 将清除其缓存。因此,当您再次附加监听器时,它将重新下载数据。

如果您希望在分离所有监听器后仍保留设备上的数据可用,enable disk persistence :

[Firebase defaultConfig].persistenceEnabled = YES;

关于ios - Firebase 下载相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com