gpt4 book ai didi

ios - 使用 Firebase 观察函数时仅调用一次 reloadtableview()

转载 作者:行者123 更新时间:2023-11-28 07:51:12 25 4
gpt4 key购买 nike

正如标题所说,我只想调用一次reloadtableview()。我该如何处理?这是我的代码:

var posts = [Post]() {
didSet {
posts.reverse()
self.tableView.reloadData()
}
}




func fetchData(){

currentQuery.observe(.value, with: { (snapshot) in
if let snapshot = snapshot.children.allObjects as? [DataSnapshot]{
var foundPosts = [Post]()
for snap in snapshot {
if let postDict = snap.value as? Dictionary<String, Any>{
let key = snap.key
let post = Post.init(postKey: key, postData: postDict)
foundPosts.append(post)
}
}

self.posts = foundPosts
geoQuery?.removeAllObservers()
}

})
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)


fetchData()
// if I put "tableView.reloadData()" here, it wont load when the app opens for the first time
}

有了这个,每当数据库中发生更改时,tableview 都会重新加载。我只想重新加载它一次,但仍然有那个观察者。

最佳答案

如果我没理解错的话,下面的代码应该可以满足您的需求。 (没法挤进评论里)

var shouldReloadTableView = true

var posts = [Post]() {
didSet {
posts.reverse()

guard shouldReloadTableView else { return }
shouldReloadTableView = false
self.tableView.reloadData()
}
}

关于ios - 使用 Firebase 观察函数时仅调用一次 reloadtableview(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49620104/

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