gpt4 book ai didi

Swift Firebase : UIRefreshControl with . 子添加

转载 作者:行者123 更新时间:2023-11-30 12:38:09 25 4
gpt4 key购买 nike

好的,如果这可能是一个非常基本的问题,请原谅我,但是如何仅使用添加到 Firebase 的新项目来刷新我的 tableView?

我正在尝试为我的 tableView 实现“拉动刷新”,并使用已添加到 Firebase 的新项目填充我的 tableView。在 viewDidLoad 中,我调用 .observeSingleEvent(.value) 来显示表格。

在刷新函数中,我调用 .observe(.childAdded)。然而,这样做将使应用程序始终监听添加的内容,使我的应用程序始终重新加载数据。如何对其进行编码,使其仅在我执行“拉动刷新”时刷新?到目前为止我的代码:

lazy var refresh: UIRefreshControl = {
let refresh = UIRefreshControl(frame: CGRect(x: 50, y: 100, width: 20, height: 20))
refresh.addTarget(self, action: #selector(refreshData), for: .valueChanged)
return refresh
}()

var eventsArray: [FIRDataSnapshot]! = []

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

ref.child("events").observeSingleEvent(of: .value, with: { (snapshot) in
for snap in snapshot.children {
self.eventsArray.insert(snap as! FIRDataSnapshot, at: 0)
}
DispatchQueue.main.async {
self.tableView.reloadData()
}

}) { (error) in
print(error.localizedDescription)

}
}

func refreshData() {
self.eventsArray = []

ref.child("events").observe(.childAdded, with: { (snapshot) in
print(snapshot)
self.eventsArray.insert(snapshot, at: 0)
DispatchQueue.main.async {
self.refresh.endRefreshing()
self.tableView.reloadData()
}
}) { (error) in
print(error.localizedDescription)

}
}

我还尝试了observeSingleEvent(.childAdded),但它只从 Firebase 中提取一个条目(最上面的条目)。

我不确定我的方法是否正确。请给我任何建议,谢谢。

最佳答案

添加

var lastKey: String? = nil

在迭代子项的循环中,将 lastKey 设置为当前快照的键。

lastKey = snap.key

请告诉我这是否适合您。

func refreshData() {
// Make sure you write a check to make sure lastKey isn't nil
ref.child("events").orderByKey().startAt(lastKey).observeSingleEvent(of: .value, with: { (snapshot) in
// You'll have to get rid of the first childsince it'll be a duplicate, I'm sure you can figure that out.
for snap in snapshot.children {
self.eventsArray.insert(snap as! FIRDataSnapshot, at: 0)
}
DispatchQueue.main.async {
self.refresh.endRefreshing()
self.tableView.reloadData()
}
}) { (error) in
print(error.localizedDescription)

}
}

关于Swift Firebase : UIRefreshControl with . 子添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42607386/

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