从Firebase存储中删除表视图图像

时间:2019-06-11 14:42:54

标签: ios swift firebase firebase-storage

我有一个带有用户要上传图像的表格视图。现在,如果用户不再想要该图像,则尝试添加一个删除按钮。

也许我只是有点烦,无法解决这个问题,但是我觉得我现在有点卡住了。

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

here you go

我不明白如何从表格视图中获取文件名。你知道吗?

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 个答案:

答案 0 :(得分:0)

方法是问题所在...这是一个概念性的答案,它将为总体结构和过程提供指导。

当图片为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中的节点的密钥,以便可以删除。