2015-11-26 2 views
7

alleAlamofireImage: Das Bild kann nicht bei der Fertigstellung von Block af_setImageWithURL erhalten

ich Swift lerne und ich versuche, ein Bild auf einem UIImageView zu setzen AlamofireImage verwenden. Ich verwende den folgenden Code ein:

self.listImageView.af_setImageWithURL(
     NSURL(string: list!.image!)!, 
     placeholderImage: nil, 
     filter: nil, 
     imageTransition: .CrossDissolve(0.5), 
     completion:{ image in 
      print(image) 
     } 
) 

und das Ergebnis in der Konsole ist der folgende:

SUCCESS: <UIImage: 0x7fb0c3ec3d30>, {512, 286} 

Mein Ziel ist es etwas mit dem Bild zu tun, wenn heruntergeladen, aber das Problem ist, dass ich verstehe die Signatur für den Abschluss-Callback nicht und weiß nicht, wie ich auf das Bild im Completion-Block zugreifen kann. Laut der Dokumentation ist Result<UIImage, NSError>.

Ich denke, etwas ist wirklich einfach, aber ich merke es nicht.

Dank

Antwort

21

Die image Variable in den Fertigblock geführt ist eigentlich Alamofire.Response-Typ, die die zugrunde liegenden UIImage Instanz selbst, die abgerufen wurde.

Sie benötigen Abschluss Block wie unten zu aktualisieren, um das aktuelle Bild aus der Antwort zu bekommen:

self.listImageView.af_setImageWithURL(
    URL(string: list!.image!)!, 
    placeholderImage: nil, 
    filter: nil, 
    imageTransition: .CrossDissolve(0.5), 
    completion: { response in 
     print(response.result.value) # UIImage 
     print(response.result.error) # NSError 
    } 
) 

Sie könnten erste response.result.isSuccess (oder sein Bruder response.result.isFailure), um sicherzustellen, überprüfen möchten, ob das Bild wurde erfolgreich abgerufen oder nicht.

+0

Danke, genau das, was ich brauchte, aber ich muss sagen, dass die Antwort es nicht sehr freundlich ist, das herauszufinden :) – estemendoza

Verwandte Themen