2013-08-30 36 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) { 
    // ... 
} 
相关问题