我正在使用具有设置限制的firestore数据来加载tableview中的更多功能,而我滚动tableview获取addListener方法调用,我检查两次,获取重复记录。
在下面的代码中,我已经打印了我正在获取的快照。每次滚动时,都会按快照ID及其数据进行打印。
仍在获取重复数据。是否有来自firebase控制台的其他设置?
这是我的代码,但代码中没有任何错误,它来自firebase。
func getTasks(){
// self.tableViewData.reloadDataWithLoader(true)
let userID = HelperFunction.helper.FetchFromUserDefault(name: kUID)
let taskRef = Firestore.firestore().collection("tasks")
let query :Query
if (self.snapLastkey == "") {
self.arrayTask = []
self.arrayKeys = []
self.arraySelectedTask = []
query = taskRef.whereField(kUUID, isEqualTo: userID).whereField(kIsCompleted, isEqualTo: false).limit(to: kLimit)
}else{
query = taskRef.whereField(kUUID, isEqualTo: userID).whereField(kIsCompleted, isEqualTo: false).limit(to: kLimit).start(afterDocument: self.snapLastDocument!)
}
query.addSnapshotListener { (snapshot, error) in
if(error == nil){
guard let snapshot = snapshot else {
// The query snapshot has error.
runOnMainThread {
// self.tableViewData.reloadData(withPlaceholderString: "No task found.", with: APP_BLACK_COLOR)
}
print("Error retrieving products: \(error.debugDescription)")
return
}
guard let lastSnapshot = snapshot.documents.last else {
// The collection is empty.
runOnMainThread {
self.tableViewData.reloadData(withPlaceholderString: "No task found.", with: APP_BLACK_COLOR)
if(self.snapLastkey != "") {
self.tableViewData.reloadDataWithLoader(false)
self.footerw.endRefreshingWithNoMoreData()
}
}
return
}
// self.snapLastDocument = lastSnapshot
if (self.arrayTask.count==0) {
self.arrayTask = []
self.arrayKeys = []
self.arraySelectedTask = []
}
snapshot.documentChanges.forEach({ (document) in
print("\(document.document.documentID) => \(document.document.data())")
let json = JSON(document.document.data())
self.arrayTask.append(Task.init(json: json))
self.arraySelectedTask.append(false)
self.arrayKeys.append(document.document.documentID)
self.snapLastkey = document.document.documentID as String
self.snapLastDocument = document.document
})
print("\n\n\n\n\n--------arr print---------\n\n")
for i in 0..<self.arrayTask.count
{
let task = self.arrayTask[i]
print("arr task Title:",task.title)
}
self.tableViewData.reloadData()
if(self.arrayTask.count==0){
self.snapLastkey = ""
self.tableViewData.reloadData(withPlaceholderString: "No task found.", with: APP_BLACK_COLOR)
}else{
if Int(snapshot.documents.count) < kLimit{
self.snapLastkey = ""
self.footerw.endRefreshingWithNoMoreData()
}
else{
self.footerw.endRefreshing()
}
}
print(self.arrayTask)
}else{
print(error?.localizedDescription ?? "")
self.tableViewData.reloadData(withPlaceholderString: "Try again.", with: APP_BLACK_COLOR)
}
}
}
答案 0 :(得分:0)
<强>解决强>
它只是索引问题。我发现它在log.So在日志中我得到了在firebase索引部分创建索引的链接。我已经创建了所需的新索引,我的数据即将到来正是我想要的。