Ich habe eine Tabelle in swift. Wenn ich in der Tabellenansicht auf und ab blättern, wird die getImageForCell
-Funktion erneut ausgeführt, obwohl das Bild bereits geladen wurde. Gibt es einen Weg dafür? Unten ist mein Code.Swift TableView macht mehrere Netzwerkanfragen für Bilder
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ReviewTableViewCell", for: indexPath) as! ReviewTableViewCell
let review = json[reviewType][indexPath.row]
cell.nameLabel.text = review[userType]["name"].stringValue
cell.reviewLabel.text = review["message"].stringValue
cell.dateLabel.text = review["created_at"].stringValue
cell.ratingStars.rating = Double(review["rating"].intValue)
getImageForCell(url: review[userType]["photo_url"].stringValue, cell: cell)
return cell
}
func getImageForCell(url: String, cell: ReviewTableViewCell) {
Alamofire.request(url).responseImage { response in
if let downloadedImage = response.result.value {
print("downloaded image \(downloadedImage)")
DispatchQueue.main.async {
cell.profileImageView.image = downloadedImage
}
}
}
}
„Gibt es eine Möglichkeit für das nicht passieren“ Was ist eine Alternative, die Sie passieren wollen? –
Er meint, er möchte nicht, dass das Bild jedes Mal heruntergeladen werden muss, sondern ein zwischengespeichertes Bild verwendet, um den Netzwerkanruf zu vermeiden. – crashlog
überprüfen Sie diesen Link: https://stackoverflow.com/questions/45316099/nscache-doesnt-work-with-all-images-when-loading-for-the-first-time – 3stud1ant3