firebase 데이터베이스에 저장된 테이블 뷰 셀을 스 와이프하여 개체를 삭제하는 기능이 있지만 내 tableView 셀에도 firebase 저장소에 저장된 이미지가 포함되어 있으므로 이미지를 삭제하고 싶습니다. 데이터를 데이터베이스에서 삭제할 때도 저장소에서 어떻게해야합니까? 삭제firebase 보관함에서 이미지를 신속하게 삭제
코드 : 로딩
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let name = food[indexPath.row].name
let ref = Database.database().reference().child("Recipes")
ref.queryOrdered(byChild: "Name").queryEqual(toValue: name).observe(.childAdded, with: { (snapshot) in
//Removes deleted cell from firebase
snapshot.ref.removeValue(completionBlock: { (error, reference) in
if error != nil {
print("There has been an error: \(error)")
}
//Removes deleted cell from array
food.remove(at: indexPath.row)
//Removes deleted cell from tableView
tableView.deleteRows(at: [indexPath], with: .left)
})
})
}
}
코드 :
let parentRef = Database.database().reference().child("Recipes")
let storage = Storage.storage()
parentRef.observe(.value, with: { snapshot in
if (snapshot.value is NSNull) {
// DATA WAS NOT FOUND
print("– – – Data was not found – – –")
} else {
//Clears array so that it does not load duplicates
food = []
// DATA WAS FOUND
for user_child in (snapshot.children) {
let user_snap = user_child as! DataSnapshot
let dict = user_snap.value as! [String: String?]
//Defines variables for labels
let recipeName = dict["Name"] as? String
let recipeDescription = dict["Description"] as? String
let downloadURL = dict["Image"] as? String
let storageRef = storage.reference(forURL: downloadURL!)
storageRef.getData(maxSize: 1 * 1024 * 1024) { (data, error) -> Void in
let recipeImage = UIImage(data: data!)
food.append(Element(name: recipeName!, description: recipeDescription!, image: recipeImage!))
self.tableView.reloadData()
}
}
}
})
겠습니까도 정말 감사 누군가는 내가이 같은 응용 프로그램에 대해 질문이 다른 질문을 나에게 도움이 될 수있는 경우 : Convert observe .value to .childAdded in swift
편집 :
중포 기지에서 개체를로드 할 때 10나는 배열에 URL을 추가 한 :
food.append(Element(name: recipeName!, description: recipeDescription!, image: recipeImage!, downloadURL: downloadURL!))
을 그리고 이것은 내가 삭제하는 데 사용할 노력하고있어입니다 : 나는 그것을 생각하지 않습니다
let storage = Storage.storage()
let storageRef = storage.reference()
let desertRef = storageRef.child(food[indexPath.row].downloadURL)
//Removes image from storage
desertRef.delete { error in
if let error = error {
print(error)
} else {
// File deleted successfully
}
}
을 그러나 이미지를 찾는 중 ...이 오류가 발생합니다.
오류 도메인 = FIRStorageErrorDomain 코드 = -13010 "개체 https : /firebasestorage.googleapis.com/v0/b/recipe-app-1b76e.appspot.com/o /B74F604B-68FD-45BB-ABDB-150B03E83A2A.png?alt=media & 토큰 = ae2643c4-647 9-4dc8-b389-d04caac98392가 없습니다. " UserInfo = {object = https : /firebasestorage.googleapis.com/v0/b/recipe-app-1b76e.appspot.com/o/B74F604B-68FD-45BB-ABDB-150B03E83A2A.png? alt = media & token = ae2643c4- ""코드 ": 404, "메시지 ":"찾을 수 없습니다. 개체를 삭제하지 못했습니다. "오류 메시지 : } },
[중포 기지 삭제 문서는] (https://firebase.google.com/docs/storage/ios/delete-files) 아마 해결, 음식 오브젝트 다운로드 URL을 추가 및 삭제 storageRef. let desertRef = storageRef.child (food.downloadUrl) desertRef.delete ... –
@EmreYILMAZ 안녕하세요 제 질문 하단의 편집을보세요 – random1234
@EmreYILMAZ 신경 쓰지 마세요! 그러나 내 다른 질문을 체크 아웃하십시오! https://stackoverflow.com/q/46549312/7109256 – random1234