से एक बच्चे को कैसे हटाएं I Instagram-esque ऐप बनाने के लिए एक ट्यूटोरियल का पालन कर रहा हूं, और मुझे फायरबेस और दोनों से एक पोस्ट को हटाने का तरीका समझने में बहुत परेशानी हो रही है भोजन। छवि उपयोगकर्ता का चयन करता है या ले जाता है कि इस समारोह के साथ Firebase डेटाबेस के लिए अपलोड की गई है:फायरबेस (स्विफ्ट)
func uploadToFirebase() {
AppDelegate.instance().showActivityIndicator()
let uid = FIRAuth.auth()!.currentUser!.uid
let ref = FIRDatabase.database().reference()
let storage = FIRStorage.storage().reference(forURL: "gs://cloudcamerattt.appspot.com")
let key = ref.child("posts").childByAutoId().key
let imageRef = storage.child("posts").child(uid).child("\(key).jpg")
let data = UIImageJPEGRepresentation(self.previewImage.image!, 0.6)
let uploadTask = imageRef.put(data!, metadata: nil) { (metadata, error) in
if error != nil {
print(error!.localizedDescription)
AppDelegate.instance().dismissActivityIndicator()
return
}
imageRef.downloadURL(completion: { (url, error) in
if let url = url {
// how do I add date: NSDate in here?
let feed = ["userID" : uid,
"pathToImage" : url.absoluteString,
"likes" : 0,
"author" : FIRAuth.auth()!.currentUser!.displayName!,
"postID" : key] as [String : Any]
let postFeed = ["\(key)" : feed]
ref.child("posts").updateChildValues(postFeed)
AppDelegate.instance().dismissActivityIndicator()
self.dismiss(animated: true, completion: nil)
}
})
}
uploadTask.resume()
}
कौन सा Firebase में समाप्त होता है इस तरह लग रही:
एक ढेर अतिप्रवाह जवाब मैंने पाया के बाद, मैंने डिलीट बटन दबाए जाने पर कॉल करने के लिए एक डिलीट फ़ंक्शन सेट अप करने का प्रयास किया। यह डिलीट बटन "फोटो विवरण" दृश्य पर है, जिसे उपयोगकर्ता छवि फ़ीड में एक छवि टैप करके प्राप्त करता है - यह फोटो विवरण दृश्य छवि को किसी अन्य जानकारी के साथ प्रदर्शित करता है जैसे कि पसंद:
func deletePost(firstTree: String, childIWantToRemove: String) {
let uid = FIRAuth.auth()!.currentUser!.uid
let ref = FIRDatabase.database().reference()
let storage = FIRStorage.storage().reference(forURL: "gs://cloudcamerattt.appspot.com")
let key = ref.child("posts").childByAutoId().key
let imageRef = storage.child("posts").child(uid).child("\(key).jpg")
ref.child("posts").child(key).child("postID").removeValue { (error, ref) in
if error != nil {
print("error \(error)")
}
}
}
और फोन यहाँ समारोह:
@IBAction func moreButtonPressed(_ sender: AnyObject) {
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel)
let destroyAction = UIAlertAction(title: "Delete", style: .destructive) { action in
print(action)
let ref = FIRDatabase.database().reference()
let key = ref.child("posts").childByAutoId().key
let firstTree = key
let valueToRemove = "postID"
self.deletePost(firstTree: firstTree, childIWantToRemove: valueToRemove)
}
alertController.addAction(destroyAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true)
}
मैं सच में नहीं समझ रहा हूँ मैं हालांकि क्या कर रहा है, और हटाएँ बटन दोहन अनिवार्य रूप से कुछ नहीं करता है कहने की। क्या कोई मुझे दिखा सकता है कि डिलीट फ़ंक्शन को कैसे ठीक किया जाए ताकि मैं एक छवि/पोस्ट को फायरबेस से ठीक से हटा सकूं?
संपादित करें:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let photoDetailController = self.storyboard?.instantiateViewController(withIdentifier: "photoDetail") as! PhotoDetailController
photoDetailController.selectedPost = posts[indexPath.row]
present(photoDetailController, animated: true, completion: nil)
}
तो यह सूचकांक पथ है: मैं अपने PhotoDetailController है, जो इतनी तरह didSelectItem
में FeedViewController (चित्र फ़ीड) से पारित हो जाता है में var selectedPost: Post!
है। उपरोक्त फ़ंक्शन के बारे में एक और नोट यह है कि var posts = [Post]()
को FeedViewController में तत्काल किया गया है, इसलिए वह है जहां posts[indexPath.row]
आता है।
क्या आपके पास अपने विवरण में कोई पोस्ट ऑब्जेक्ट है, वर्तमान दृश्य की जानकारी के साथ विस्तार दृश्य में देखें? या कोई ऑब्जेक्ट जिसमें पोस्ट की जानकारी शामिल है (जैसे आईडी)? –
हे पीटर हां मेरे पास एक वेरिएबल है जिसमें पोस्ट ऑब्जेक्ट और फ़ीड से चयनित छवि का इंडेक्स पथ है - मेरा संपादन जांचें, मैंने कोड को स्पष्ट करने के लिए वहां रखा है। – KingTim