我有一个带有用户要上传图像的表格视图。现在,如果用户不再想要该图像,则尝试添加一个删除按钮。
也许我只是有点烦,无法解决这个问题,但是我觉得我现在有点卡住了。
因此,当我单击tableview行时。 (DidSelectRow),则应检索Firebase存储映像名称。如下图所示:
我不明白如何从表格视图中获取文件名。你知道吗?
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!")
}
}
答案 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中的节点的密钥,以便可以删除。