निम्नलिखित कोड फायरबेस से छवियों को प्राप्त करता है, लेकिन गलत तरीके से दो छवियों की नकल करता है। मुझे लगता है कि ऐसा self.tableView.reloadData() के प्लेसमेंट के कारण हुआ है, मेरे द्वारा आजमाए गए किसी भी प्लेसमेंट ने काम नहीं किया। क्या कोई मुझे सुझाव दे सकता है?

    func fetchAllUsersImages() {
    print("inside func")
    self.ref.child("Posts").child(self.userID).child(self.postNum).observe(.childAdded, with: { snapshot in
        if let snapShotValue = snapshot.value as? [String: String] {
            for (_, value) in snapShotValue {
                if let imageURL = URL(string: value) {
                    print(imageURL, "image url here")
                    do {
                        let imageAsData = try Data(contentsOf: imageURL)
                        let image = UIImage(data: imageAsData)
                        let ImageObject = Image()
                        ImageObject.image = image
                        self.arrayOfImgObj.append(ImageObject)
                    } catch {
                        print("imageURL was not able to be converted into data")
                    }
                }
            }
        }
    })
}
2
user10497264 1 नवम्बर 2018, 04:07

1 उत्तर

सबसे बढ़िया उत्तर

सुनिश्चित करें कि आपने फ़ंक्शन को कॉल करना प्रारंभ करते समय सरणी साफ़ कर दी है क्योंकि आप सरणी में डेटा जोड़ रहे हैं। दूसरे, लूप के लिए समाप्त होने के बाद तालिका को पुनः लोड करें।

func fetchAllUsersImages() {
    self.arrayOfImgObj.removeAll() // clean the array

    self.ref.child("Posts").child(self.userID).child(self.postNum).observe(.childAdded, with: { snapshot in
        if let snapShotValue = snapshot.value as? [String: String] {
            for (_, value) in snapShotValue {

            }
            tableView.reloadData() // reload view
        }
    })
}
1
xmhafiz 1 नवम्बर 2018, 02:32