2015-11-26 7 views
7

tuttiAlamofireImage: Non è possibile ottenere l'immagine nel blocco di completamento da af_setImageWithURL

Sto imparando Swift e sto cercando di impostare un'immagine su un UIImageView utilizzando AlamofireImage. Sto usando il seguente codice:

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

e il risultato nella console è la seguente:

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

Il mio obiettivo è di fare qualcosa con l'immagine una volta che è stato scaricato, ma il problema è che io non capisco la firma per il callback di completamento e non so come accedere all'immagine nel blocco di completamento. Secondo la documentazione, è Result<UIImage, NSError>.

Immagino sia qualcosa di veramente semplice, ma non me ne accorgo.

Grazie

risposta

21

Il image variabile passata nel blocco completamento è in realtà Alamofire.Response tipo, non il sottostante UIImage istanza stessa che è stato recuperato.

è necessario aggiornare il vostro blocco di completamento, come di seguito al fine di ottenere l'immagine reale dalla risposta:

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 
    } 
) 

Si potrebbe prima voler controllare response.result.isSuccess (o suo fratello response.result.isFailure) per assicurarsi che se l'immagine è stato recuperato con successo o no.

+0

Grazie, esattamente quello di cui avevo bisogno, ma devo dire che la risposta non è molto amichevole per capirlo :) – estemendoza