在 Swift 中,我正在嘗試實作分頁,并且我能夠檢索下一批檔案,但是,不是在 UITableView 底部加載它們,而是替換了第一批檔案。我不確定我做錯了什么。任何幫助是極大的贊賞。這是我的代碼:
private var currentKey: String?
func fetchGlimpseData() {
if currentKey == nil {
GLIMPSE_ALL_USERS_DATA.order(by: TIMESTAMP, descending: true).limit(to: 3)
.getDocuments { (snapshot, error) in
guard let last = snapshot?.documents.last else { return }
guard let allObjects = snapshot?.documents else { return }
allObjects.forEach( { document in
self.glimpse.removeAll()
self.glimpse = Glimpse.parseData(snapshot: snapshot)
self.glimpseTableView.reloadData()
})
self.currentKey = last.documentID
}
} else if currentKey != nil {
GLIMPSE_ALL_USERS_DATA.order(by: TIMESTAMP, descending: true).limit(to: 3).getDocuments { (snapshot, error) in
guard let lastDoc = snapshot?.documents.last else { return }
if snapshot?.isEmpty == false {
GLIMPSE_ALL_USERS_DATA.order(by: TIMESTAMP, descending: true).start(afterDocument: lastDoc).getDocuments { ( snapshot, error) in
guard let snap = snapshot?.documents else { return }
snap.forEach( { document in
self.glimpse = Glimpse.parseData(snapshot: snapshot)
})
}
}
self.glimpseTableView.reloadData()
}
}
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
let currentOffset = scrollView.contentOffset.y
let maxOffset = scrollView.contentSize.height - scrollView.frame.size.height
if maxOffset - currentOffset <= 40 {
fetchGlimpseData()
}
}
uj5u.com熱心網友回復:
我認為問題來自對self.glimpse.removeAll()這里的呼叫:
GLIMPSE_ALL_USERS_DATA.order(by: TIMESTAMP, descending: true).limit(to: 3)
.getDocuments { (snapshot, error) in
guard let last = snapshot?.documents.last else { return }
guard let allObjects = snapshot?.documents else { return }
allObjects.forEach( { document in
self.glimpse.removeAll()
self.glimpse = Glimpse.parseData(snapshot: snapshot)
...
由于您首先從 中洗掉所有資料self.glimpse,因此在添加新資料后將洗掉前一頁資料。
要保留兩個頁面,請不要呼叫self.glimpse.removeAll().
正如您在評論中指出的那樣,您的第二頁是由 else 塊加載的 - 因此上述內容不會導致該問題。
在 else 塊中,您還可以self.glimpse在此行中使用每個快照替換現有值:
self.glimpse = Glimpse.parseData(snapshot: snapshot)
所以:無論self.glimpse該行之前的值是什么,在該行運行后它都會消失。
我希望看到的東西,你添加的Glimpse.parseData(snapshot: snapshot)到self.glimpse不是每次都替換它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326571.html
標籤:迅速 合适的视图 谷歌云firestore 分页
