Ich versuche, Bilder aus meiner Firebase-Datenbank in meiner TableView-Zelle zu laden. Im mit AlamofireImage.Laden von Bildern von Firebase in TableViewCell Swift
@IBOutlet weak var tableView: UITableView!
var storiesArray = [Stories]()
override func viewDidLoad() {
super.viewDidLoad()
retrieveStories()
}
Im immer die imageDownloadURL in dieser Funktion, die ich in viewDidLoad nennen()
func retrieveStories() {
let storiesDB = Database.database().reference().child("storyDetails")
storiesDB.observe(.childAdded) { (snapshot) in
let snapshotValue = snapshot.value as! Dictionary<String,String>
let autor = snapshotValue["autor"]!
let genre = snapshotValue["genre"]!
let titel = snapshotValue["titel"]!
let downloadURL = snapshotValue["imageDownloadURL"]
let story = Stories()
story.genre = genre
story.titel = titel
story.autor = autor
story.downloadURL = downloadURL
self.storiesArray.append(story)
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
}
}
Nachdem ich all diese Daten habe ich die Bilder von der url's herunterladen mag, die ich jetzt in storiesArray.downloadURL
im tun, dass in cellForRowAtIndexPath
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! StoryDetailCell
if storiesArray[indexPath.row].downloadURL != nil {
Alamofire.request(indexPathRow.downloadURL!).responseImage { response in
debugPrint(response)
print(response.request as Any)
print(response.response as Any)
debugPrint(response.result)
if let image = response.result.value {
print("image downloaded: \(image)")
DispatchQueue.main.async {
cell.storyImage.image = image
}
}
}
} else if indexPathRow.downloadURL == nil {
cell.storyImage.image = #imageLiteral(resourceName: "standard")
}
Die Bilder werden nur geladen, wenn die Zelle gerade angezeigt wird. Das verursacht viele Probleme. Ein Problem ist, dass wenn ich scrollte schneller als ein Bild lädt, wird es in einer anderen Zelle angezeigt.
Ich würde gerne wissen, wie man mit einer Situation wie dieser fertig wird.
Dies ist nicht wirklich eine Antwort, aber SDWebImage wird sich um alles kümmern. Und es wäre wahrscheinlich auch besser für Sie, ein Platzhalterbild zu haben. – EDUsta