1

我正在使用 a UICollectionView,我需要将图像加载到收集单元中。

这是代码

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是空白的而不是图像。

有人有想法么?

4

1 回答 1

2

您的代码看起来应该可以工作,但是您需要测试几件事。首先,您需要检查以确保imageURL它既非零,又指向您认为它指向的确切位置。如果需要,将日志结果复制粘贴到桌面浏览器。

NSLog(@"%@",imageURL);

其次,如果获取图像失败,您需要能够检测到这一点。我建议如果您继续使用 dataWithContentsOfURL: 路由,您至少使用以下内容来检查错误:

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

if (error) {
    // ...
}
于 2013-08-30T14:25:56.093 回答