2013-01-03 12 views
7

Moim celem próbuje uzyskać rozmiaru pobranego obrazu poprzez udanym bloku jak poniżej:coraz [bibliotece NSURL cachePolicy]: selektor nierozpoznany wysyłane do instancji podczas pobierania obrazu, AFNetworking

[imageView setImageWithURLRequest:[NSURL URLWithString:((ObjectA*)obj[indexPath.row]).imageUrl] 
       placeholderImage:nil 
         success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
          CGFloat imageHeight = image.size.height; 
          CGFloat imageWidth = image.size.width; 
          NSLog(@"width of image is %f",imageWidth); 
          NSLog(@"height of image is %f",imageHeight); 
         } 
         failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
          ; 
         } ]; 

Jednak jestem awaria z pokazanym błędem jak poniżej:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURL cachePolicy]: unrecognized selector sent to instance 0x1edb9e70' 

Czy ktoś zna przyczynę tego błędu. Proszę o pomoc, jeśli masz jakieś pomysły

+0

trochę debugowania? Jestem prawie pewien, że to nie jest obiekt, który twoim zdaniem jest. –

+1

'[NSURL cachePolicy]' Skąd to się nazywa? –

Odpowiedz

15

Błąd mówi, że cachePolicy (która jest metodą) jest wywoływana na obiekcie NSURL.

Problem polega na tym, że przekazujesz obiekt NSURL jako pierwszy parametr zamiast obiektu NSURLRequest. (Nie jestem zaznajomiony z tym 3rd API, ale dokumentacja wydaje się być here)

12

problem jest z tym kodem:

[imageView setImageWithURLRequest:[NSURL URLWithString:((ObjectA*)obj[indexPath.row]).imageUrl] 

Parametrem setImageWithURLRequest: jest NSURLRequest, jesteś przejazdem NSURL. Właśnie dlatego się zawiesza.

go zmienić na:

[imageViewsetImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:((ObjectA*)obj[indexPath.row]).imageUrl]] 
+0

nadal masz problemy? –

2

Myślę, że problem jest w pierwszej linii

[imageView setImageWithURLRequest:[NSURL URLWithString:imageUrl] 

setImageWithURLRequest z podpisem wygląda spodziewa się "URLRequest", podczas gdy jesteś przechodzącą URL.

więc stworzyć URLRequest z URL i przekazać go i zobacz czy działa