Ich bin relativ neu in iOS und würde mich freuen, wenn Sie herausfinden, wie Sie ein Array von Bildern erstellen, wenn Sie eine Erweiterung zum Verwalten von Downloads und Caching verwenden. Ich bin damit ein paar Stunden im Kreis herumgelaufen und dachte, es wäre an der Zeit, das Brain Trust anzuzapfen.Bild-Array mit Bildern im Cache erstellen (Swift)
Ich habe eine Verlängerung der UIImageView um so zu downloaden und Cache-Bilder:
let imageCache = NSCache()
extension UIImageView {
func loadImageUsingCacheWithURLString(url: NSURL) {
self.image = nil
// First check if there is an image in the cache
if let cachedImage = imageCache.objectForKey(url) as? UIImage {
self.image = cachedImage
return
}
else {
// Otherwise download image using the url location in Google Firebase
NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, response, error) in
if error != nil {
print(error)
}
else {
dispatch_async(dispatch_get_main_queue(), {
// Cache to image so it doesn't need to be reloaded every time the user scrolls and table cells are re-used.
if let downloadedImage = UIImage(data: data!) {
imageCache.setObject(downloadedImage, forKey: url)
self.image = downloadedImage
}
})
}
}).resume()
}
}
... so, die für das Laden Sammlung Ansicht Bilder funktioniert gut. Ich möchte aber auch ein Array der Bilder aufnehmen, damit ich es auf einen anderen View-Controller übertragen kann und nicht alles neu herunterladen muss (Datenverschwendung). Ich habe eine andere Funktion dafür erstellt, aber imageholder.image ist immer null. Ich denke nicht, dass es ein asynchrones Problem ist, weil alle Bilder zu diesem Zeitpunkt zwischengespeichert werden und wenn ich debugge, kann ich es nie zu Null bringen.
var imageHolder: UIImageView!
var imagesArray:[UIImage] = [UIImage]()
// Function to create images array to use on the photo view.
func createImagesArray() {
for url in imagesURLArray {
imageHolder.loadImageUsingCacheWithURLString(url)
if imageHolder.image != nil {
imagesArray.append(imageHolder.image!)
}
}
}
Es fühlt sich an, als würde ich etwas Einfaches vermissen, aber ich stecke fest. Vielen Dank!
Sie verwenden nur eine Bibliothek dafür. Betrachte https://github.com/Haneke/HanekeSwift https://github.com/onevcat/Kingfisher etc. – Fattie