代码之家  ›  专栏  ›  技术社区  ›  בועז יערי

将图像加载到调度中的UIImageView中无法工作

  •  1
  • בועז יערי  · 技术社区  · 11 年前

    我正在和一个 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 是空白而不是图像。

    有人有什么想法吗?

    1 回复  |  直到 11 年前
        1
  •  2
  •   Mick MacCallum    11 年前

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

    NSLog(@"%@",imageURL);
    

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

    NSError *error = NULL;
    NSData *data = [NSData dataWithContentsOfURL:imageURL options:NSDataReadingMappedIfSafe error:&error];
    
    if (error) {
        // ...
    }