2013-08-30 38 views
1

我正在使用UICollectionView,我需要將圖像載入收集單元。將圖像載入到UIImageView中,發送不起作用

下面是代碼

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); 
    dispatch_async(queue, ^{ 
     NSURL *imageURL = [NSURL URLWithString:post.cover_img_url]; 
     NSData *data = [NSData dataWithContentsOfURL:imageURL]; 
     UIImage *image = [UIImage imageWithData:data]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [cell.cover_img setImage:image]; 
     }); 
    }); 


post.cover_img_url = the_url_for_the_image; 
cell.cover_img = the_UIImageView_object; 

當我設置的圖像不從網絡,它完美的作品。

但是,當我嘗試從網絡上,UIImageView是空白的圖像。

任何人有任何想法?

+0

你得到一個有效的(即不是無)圖像回的圖像變量? –

+0

@DavidDoyle我該如何檢查? –

+0

在調試器中檢查它 - 在以「UIImage * image =」開頭的行上添加一個斷點,然後將對象打印出來。如果你找回看起來像一串數字的東西,那麼它可能是一個有效的圖像。如果它回來爲零,那麼你沒有設法下載圖像(或源不是圖像文件)。 –

回答

2

您的代碼看起來應該可以正常工作,但有幾件事需要測試。首先,您需要檢查以確保imageURL不是零,而是指向您認爲它指向的位置。如果必須,請將日誌結果複製到桌面瀏覽器。

NSLog(@"%@",imageURL); 

其次,在提取圖像失敗的情況下,您需要能夠檢測到這一點。我建議,如果您繼續使用dataWithContentsOfURL:路由你至少使用以下方法來檢查錯誤:

NSError *error = NULL; 
NSData *data = [NSData dataWithContentsOfURL:imageURL options:NSDataReadingMappedIfSafe error:&error]; 

if (error) { 
    // ... 
} 
相關問題