我会尽力解释我在使用firebase工作的时间吗?截至目前,我在 override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 方法中调用了firebase
经过一些测试后,似乎它正在加载firebase中的所有内容,但它并没有更新UI . 这导致我相信它在出于某种原因加载信息之前创建了单元格?我将尝试弄清楚如何以某种方式使其“阻止” .
1 回答
您应该将加载委托给单元格本身,而不是collectionView:cellForItemAtIndexPath方法 . 原因是委托方法将异步挂起并用于FireBase网络任务的回调 . 虽然后者通常很快(根据经验),但您可能在此处遇到一些UI加载问题 . 根据视图中的方块数判断..
理想情况下,你想要这样的东西:
你会用它:
如果这不起作用,很可能您可能遇到一些Firebase限制..这是不太可能的imo .
Update .. with some corrections and with local cache .
然而,有一点,使用NSCache:这适用于中小型列表或内容范围;但是它有一个内存管理功能,如果内存变得稀缺,可以对内容进行去内核处理 . 所以当处理像你这样的大集合时,你可能会选择使用分类字典,因为它的内存不会自动解除分配 . 使用它就像交换东西一样简单:
此外,始终确保通过
node
强引用Firebasenode
,这可确保您始终使用Firebasenode
的ONE实例 . 即,这没关系:Firebasenode.node.ref
或Firebasenode.node.getSnapshot..
,这不是:Firebasenode.ref
或Firebasenode().ref