Firebase存储删除uidd图像

时间:2019-11-08 12:40:09

标签: ios swift firebase firebase-storage

我正在尝试从Firebase存储中删除uuid图像。添加uuid图像时,可以从tableview中将其删除,但不能从Firebase Storage中将其删除。如果添加不带uuid的图像,则可以使用图像名称将其删除而不会出现任何问题。我的问题是如何获取uuid图片名称作为参考。

这是我在Firebase存储中上传图片(在AddViewController中)的代码:

@IBAction func saveButtonClicked(_ sender: Any) {

    // STORAGE

    let storage = Storage.storage()
    let storageReference = storage.reference()

    let mediaFolder = storageReference.child("media")

    let userUid = Auth.auth().currentUser?.email!

    if let data = childImageView.image?.jpegData(compressionQuality: 0.2) {

        let uuid = UUID().uuidString

        let imageReference = mediaFolder.child("\(userUid!)/\(uuid).jpg")

        imageReference.putData(data, metadata: nil) { (metadata, error) in
            if error != nil {
                self.makeAlert(titleInput: "Error!", messageInput: error?.localizedDescription ?? "Error")
            } else {

                imageReference.downloadURL { (url, error) in
                    if error == nil {
                        let imageUrl = url?.absoluteString

这是我在Firebase Storage中删除图像的代码(在mainViewController中):

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {

        // STORAGE

        let storage = Storage.storage()
        let storageReference = storage.reference()

        let userUid = Auth.auth().currentUser?.email!
        let uuid = UUID().uuidString

        let mediaFolder = storageReference.child("media").child("\(userUid!)/\(uuid).jpg")

        mediaFolder.delete { (error) in
            if let error = error {
                print("Image Error")
            } else {
                print("Image Deleted")
            }
        }

1 个答案:

答案 0 :(得分:1)

UUID是唯一的,并且创建新的UUID(就像您在调用UUID()时所做的那样)正在生成一个新的UUID(冲突的可能性极高)。您应该在单元模型中保存对象标识符(其UUID)