Swift:我在Firebase Storage中的文件不会被删除

时间:2018-12-04 09:47:36

标签: swift firebase firebase-storage

我有一个允许用户将一些图片保存在Firebase Storage上的应用程序。

我正试图允许用户从应用程序中删除此文件,并因此也从存储中删除它。

我的代码:

if let user = Auth.auth().currentUser{

                // user is connect

                let storRef = Storage.storage().reference()
                let userID = Auth.auth().currentUser?.uid


                storRef.child("Planes").child(userID!).child(dataME[indexPath.row].image).delete(completion: nil)

                self.tableView.reloadData()

                dataME.remove(at: indexPath.row)

            }else{

                fatalError("⛔️ error ...")
            }

现在在这种情况下,我的tableView中的行与我的代码的另一部分完全删除了,数据库引用也被删除了,但是存储不能删除图片...为什么?

非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

检查删除存储时是否出错

let storageRef = Storage.storage().reference().child("Planes").child(userID!).child(dataME[indexPath.row].image)
    storageRef.delete { (error) in
        if error != nil{
            print(error)
            return
        }
        // else proceed

    }

答案 1 :(得分:0)

您不应按图像搜索。 而是尝试使用Firebase提供的下载URL

您可以通过单击存储从Firebase仪表板获取URL,然后单击当前映像,然后单击当前映像。

上传图像时,它返回带有URL的回调,则必须将URL保存在数据结构中

上传图片示例:

func uploadImagePic(img1 :UIImage){
        var data = NSData()
        data = UIImageJPEGRepresentation(img1!, 0.8)! as NSData
        // set upload path
        let filePath = "\(userid)" // path where you wanted to store img in storage
        let metaData = FIRStorageMetadata()
        metaData.contentType = "image/jpg"

        self.storageRef = FIRStorage.storage().reference()
        self.storageRef.child(filePath).put(data as Data, metadata: metaData){(metaData,error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }else{
                //store downloadURL
                let downloadURL = metaData!.downloadURL()!.absoluteString
                data[index].downloadURL = downloadURL
            }
        }

    }

    // delete example
    let storage = Storage.storage()
    let url = data[index].downloadURL
    let storageRef = storage.reference(forURL: url)

        storageRef.delete { error in
            if let error = error {
                print(error)
            } else {
                // File deleted successfully
            }
        }