Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase UICollectionView刷新:多次获取每个单元格_Firebase_Firebase Realtime Database_Uicollectionview_Swift5 - Fatal编程技术网

Firebase UICollectionView刷新:多次获取每个单元格

Firebase UICollectionView刷新:多次获取每个单元格,firebase,firebase-realtime-database,uicollectionview,swift5,Firebase,Firebase Realtime Database,Uicollectionview,Swift5,嗨,我有一个问题,刷新我的collectionView后,我将每个单元格打开两次 我的看法。在第二次刷新后,我将对每个单元格进行3次刷新。我在第二次使用segue呈现视图时也遇到了这个问题 我怎样才能解决这个问题 有人能帮我吗 提前谢谢你!!! Firebase函数是异步的,在同步代码运行后将调用闭包中的代码。换句话说,你有这个 fetchData() posts.removeAll() collectionview.reloadData() 但是在填充数组之前将调用post

嗨,我有一个问题,刷新我的collectionView后,我将每个单元格打开两次 我的看法。在第二次刷新后,我将对每个单元格进行3次刷新。我在第二次使用segue呈现视图时也遇到了这个问题

我怎样才能解决这个问题

有人能帮我吗

提前谢谢你!!!
Firebase函数是异步的,在同步代码运行后将调用闭包中的代码。换句话说,你有这个

   fetchData()
   posts.removeAll()
   collectionview.reloadData()
但是在填充数组之前将调用
posts.removeAll()
collectionview.reloadData()

下面是对调用顺序的简要概述

@objc private func refreshData(_ sender: Any) {
   self.loadFirebaseData()
}

func loadFirebaseData() {
   ...
   self.posts = []
   for (_,post) in postsSnap {
      self.posts.append(posst)
   }
   self.posts.sort(by: {$0.postdateprog > $1.postdateprog}
   self.collectionview.reloadData()
}

注意,我将排序和重载数据移到for循环之外。在填充数据源时,没有理由反复调用这些函数。完成该任务后再执行。

Firebase函数是异步的,在同步代码运行后将调用闭包中的代码。换句话说,你有这个

   fetchData()
   posts.removeAll()
   collectionview.reloadData()
但是在填充数组之前将调用
posts.removeAll()
collectionview.reloadData()

下面是对调用顺序的简要概述

@objc private func refreshData(_ sender: Any) {
   self.loadFirebaseData()
}

func loadFirebaseData() {
   ...
   self.posts = []
   for (_,post) in postsSnap {
      self.posts.append(posst)
   }
   self.posts.sort(by: {$0.postdateprog > $1.postdateprog}
   self.collectionview.reloadData()
}
注意,我将排序和重载数据移到for循环之外。在填充数据源时,没有理由反复调用这些函数。任务完成后再做