Reputation: 149
I'm trying to delete an uuid image from Firebase Storage. When I add an uuid image, I can delete it from tableview but not from Firebase Storage. If I add an image without uuid, I can delete it with image name without any problem. My problem is how to get uuid image name as a reference.
Here's my code for upload image(in AddViewController) in Firebase Storage:
@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
Here's my code for delete image (in mainViewController) in Firebase Storage:
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")
}
}
Upvotes: 1
Views: 117
Reputation: 241
UUID is unique and creating new UUID (as you do when you call UUID()
) is generating a new one (with misery chance of collision). You should hold object identifier (its UUID) inside your cell model
Upvotes: 1