从 Firebase 存储中删除 tableview 图像

Posted

技术标签:

【中文标题】从 Firebase 存储中删除 tableview 图像【英文标题】:Deleting tableview image from Firebase Storage 【发布时间】:2019-06-11 14:42:54 【问题描述】:

我有一个表格视图,其中包含用户将上传的图像。现在,如果用户不再需要该图像,我将尝试添加删除按钮。

也许我只是脑子很累,找不到解决办法,但我觉得我现在有点卡住了。

因此,当我单击 tableview 行时。 (DidSelectRow) 它应该检索 Firebase 存储映像名称。如下图:

here you go

我不明白如何从 tableview 获取文件名。你知道吗?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

    deletePathFromArray = indexPath.row
    deleteName = UUID().uuidString
    print(indexPath)

这就是我迄今为止所做的。 (deletePathFromArray 只会从 tableview 中删除它,而不是从存储中删除)

我也有这个:

let deleteRef = storageRef.child(deleteName)
        deleteRef.delete  (err) in
            if let err = err
            
                print(err.localizedDescription)
            
            else
            
                print("Successfully deleted image!")
            
        

【问题讨论】:

【参考方案1】:

方法就是问题...这是一个概念性的答案,将提供有关整体结构和流程的方向。

当图片为uploaded to Storage 时,您将获得一个引用该图片的网址。该引用应存储在 Firestore 或 RTDB 中。

您的 tableView 应该是backed by a dataSource。最初加载图像时,典型的设计模式是具有表示该数据的类或结构。例如在 RTDB 中我们会有

users_images
    uid_0
       image_id_0 //created with .childByAutoId
          image_url: "http.... reference to the image in Storage"
          title: "My Visit To Paris"

还有一个可以容纳它的类

class UserImageClass 
   var key = ""
   var uid = ""
   var title = ""
   var url = ""

然后将这些类存储在一个数组中,这是您的 tableView 的数据源

class ViewController: NSViewController 
    var imagesArray = [UserImageClass]()

从那里如果用户滑动删除,您将知道他们滑动的行的索引,然后您可以从 dataSource 数组中获取对象。由此,您将知道存储中图像的url引用,因此可以删除它,然后还有RTDB中节点的密钥,以便可以删除。

【讨论】:

以上是关于从 Firebase 存储中删除 tableview 图像的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Firebase 存储中删除 Vue.js 组件图像?

如何从 Firebase 存储下载 URL 中删除查询字符串

从 foreach 中删除单个图像(Firebase 存储)

从 Firebase 存储中删除文件会导致崩溃

Firebase:如何获取不匹配图像的差异并从存储中删除图像

使用 Cloud Functions 的下载 URL 从 Firebase 存储中删除文件