从 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存储中获取图像的尺寸?
如何从 Firebase Storage 获取图像并在 Angular 2 ngFor 中显示它们