2013-10-21 4 views
51

Apparentemente non c'è AFImageRequestOperation, ma solo AFImageResponseSerializer e francamente non capisco o forse sto guardando troppo a lungo attraverso il sito AFNetworking ... Scaricare immagini con AFNetworking precedente era come un incantesimo. Odio tornare al vecchio AFnetworking, dato che ho fatto quasi tutte le cose tramite la nuova versione ... Chiunque?Come scaricare l'immagine con AFNetworking 2.0?

risposta

126

Quindi si desidera qualcosa di simile per 2.0.

AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; 
requestOperation.responseSerializer = [AFImageResponseSerializer serializer]; 
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"Response: %@", responseObject); 
    _imageView.image = responseObject; 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Image error: %@", error); 
}]; 
[requestOperation start]; 

Come già detto da Adam si può anche fare qualcosa di simile al di sotto se sono solo voglia di gettarlo in un IMAGEVIEW

[myImageView setImageWithURL:[NSURL URLWithString:@"http://sitewithimage.com/images/myimage.png"]]; 
+3

salvato la mia vita :) Sapevo che c'era qualche soluzione :) – raistlin

+0

Sarebbe presente nella coda principale o nella coda di sfondo? – Tander

+0

@Tander I blocchi di completamento vengono eseguiti nella coda principale – Bot

4

per vecchia versione, non c'è responseSerializer, è anche possibile

AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; 
//requestOperation.responseSerializer = [AFImageResponseSerializer serializer]; 
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"Response: %@", responseObject); 
    _imageView.image = [UIImage imageWithData:responseObject]; 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Image error: %@", error); 
}]; 
[requestOperation start]; 
+0

La domanda è specifica per AFNetworking 2.0 – Bot

+0

ok, hai ragione. – lbsweek

0

Per le persone che utilizzano AFNetworking a Swift, above solution può essere scritto come di seguito

let requestOperation : AFHTTPRequestOperation = AFHTTPRequestOperation(request: urlRequest) 
    requestOperation.responseSerializer = AFImageResponseSerializer() 

    requestOperation.setCompletionBlockWithSuccess({ (requestOperation, responseObject) in 
     print(responseObject) 
     _imageView.image = responseObject as? UIImage 

    }) { (requestOperation, error) in 
     print(error) 
    } 
    requestOperation.start()