从 firebase 获取的图像在将它们添加到 tableViewCells 的过程中重复?

Posted

技术标签:

【中文标题】从 firebase 获取的图像在将它们添加到 tableViewCells 的过程中重复?【英文标题】:Images fetched from firebase are duplicated in the process of adding them to tableViewCells? 【发布时间】:2018-11-01 01:07:03 【问题描述】:

以下代码从 firebase 获取图像,但错误地复制了两个图像。我认为这是由于self.tableView.reloadData() 的位置我尝试过的所有位置都没有工作。谁能给我建议?

    func fetchAllUsersImages() 
    print("inside func")
    self.ref.child("Posts").child(self.userID).child(self.postNum).observe(.childAdded, with:  snapshot in
        if let snapShotValue = snapshot.value as? [String: String] 
            for (_, value) in snapShotValue 
                if let imageURL = URL(string: value) 
                    print(imageURL, "image url here")
                    do 
                        let imageAsData = try Data(contentsOf: imageURL)
                        let image = UIImage(data: imageAsData)
                        let ImageObject = Image()
                        ImageObject.image = image
                        self.arrayOfImgObj.append(ImageObject)
                     catch 
                        print("imageURL was not able to be converted into data")
                    
                
            
        
    )

【问题讨论】:

您可以在***.com/questions/39597844/…找到解决方案 @Usama no that doesn't answer the question 在提议的解决方案中,他从 firebase 检索了图像。 @Usama 我已经这样做了,问题是添加到单元格时的图像被复制了。我相信这是因为 self.tableView.reloadData() 的位置不在上面的代码中,因为我想知道它应该在哪里避免这个,原来它在 eth do block @TheGreatVisionary 不要在问题文本中回复 cmets 或其他答案,请在您的问题下方或您正在回复的答案下方的 cmets 中回复。如果人们看到问题,如果您(提问者)尚未单击其中一个答案旁边的复选标记以确认其为已接受的答案,他们会认为该问题可能未得到回答。 (当有人确实提供了有效的答案时,请这样做) 【参考方案1】:

确保在开始调用函数时清除数组,因为您将数据附加到数组中。其次,完成for循环后重新加载表。

func fetchAllUsersImages() 
    self.arrayOfImgObj.removeAll() // clean the array

    self.ref.child("Posts").child(self.userID).child(self.postNum).observe(.childAdded, with:  snapshot in
        if let snapShotValue = snapshot.value as? [String: String] 
            for (_, value) in snapShotValue 

            
            tableView.reloadData() // reload view
        
    )

【讨论】:

这仍然复制了图像...我在特定位置有两个,它都复制了两个,导致 tableView 中有 4 个图像

以上是关于从 firebase 获取的图像在将它们添加到 tableViewCells 的过程中重复?的主要内容,如果未能解决你的问题,请参考以下文章

如何在将图像上传到 Firebase 之前调整其大小?

从firebase加载图像并缓存swift3

如何从firebase函数中的firebase存储中获取图像的尺寸?

如何从 Firebase Storage 获取图像并在 Angular 2 ngFor 中显示它们

如何在将图像上传到 Firebase 存储之前对其进行压缩?

未定义的变量 & 试图在将按钮添加到图像功能时获取非对象的属性