2014-05-14 126 views
0

我試圖下載圖像的數組的數組,但我從來沒有收到圖像回調:afnetworking下載圖像

for (int i = 0; i < self.apartments.count; i++) { 
     NSLog(@"downloading another image"); 
     ATProperty *aProp = self.apartments[i]; 
     if (aProp.aptImages.count > 0) { 
      NSURL *url = [NSURL URLWithString:aProp.aptImages[0]]; 
      NSLog(@"url string: %@", aProp.aptImages[0]); 
      NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
      UIImage *placeholderImage = [UIImage imageNamed:@"loading_apt.png"]; 
      UIImageView *anotherImage; 

      NSLog(@"about to start req"); 
      [anotherImage setImageWithURLRequest:request 
           placeholderImage:placeholderImage 
             success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) 
      { 
       NSLog(@"got an IMAGE "); 
       self.imagesArray[i] = image; 
       if (self.apartments[0] == aProp) [self setupDraggableView:image]; 
      } failure:nil]; 
     } else { 
      UIImage *defImage = [UIImage imageNamed:@"default_apt.png"]; 
      if (self.apartments[0] == aProp) [self setupDraggableView:defImage]; 
      [self.imagesArray addObject:defImage]; 
     } 
    } 

正如你所看到的,我真的不希望設置一個ImageView的,我只是想將UIImage放入數組中供以後使用。在這種情況下,「獲取IMAGE」日誌語句永遠不會被接收到。爲什麼會這樣呢?該網址是有效的。此外,這有點像一個JavaScript封閉?例如,如果我在數組中共有5個公寓,那麼當我執行第一個標註(i = 0)並獲得成功回調時,我是否會將標註實例化(即1)的值?

+0

爲什麼你使用AF的UIImageView類只是爲了下載圖像,如果你不想把它設置爲圖像視圖?僅僅使用NSURLConnection/Session API來下載它不是更簡單嗎? – Andrew

+0

我不知道...會不會是? – thebiglebowski11

+1

好吧,是的。它確實爲您提供了一個緩存系統,但它也會默認擴展圖像,以便它可以在圖像視圖上呈現,因此您正在做很多不一定需要的工作在這個時候做。 https://github.com/AFNetworking/AFNetworking/blob/master/UIKit%2BAFNetworking/UIImageView%2BAFNetworking.m和http://cocoadocs.org/docsets/AFNetworking/2.0.0/Classes/AFImageResponseSerializer.html瞭解更多信息。你也可以分配一個你將要丟棄的UIImageView,雖然它不是很貴,但仍然可以省下很多額外的工作。 – Andrew

回答

0

anotherImage是nil,所以它永遠不會加載。嘗試這樣的:

UIImageView *anotherImage = UIImageView.new;