1

我想知道通常是否可以通过URL加载图像,该 URL通过JSON解析到UIImageView.tableview

我在 UI 中尝试了这个但没有成功,日志中只有两个图像。我不明白他为什么只给我看 2 个网址而不是 18 个。

   NSString *bildurl = [[arrayArtikelBild objectAtIndex:indexPath.row] objectForKey:@"bild"];
   NSLog(@"BildURL: %@", bildurl);
   UIImage *image = [UIImage imageWithContentsOfFile:bildurl];
   cell.artikelImage.image = image;

我知道我的解析代码可以工作,因为我已经让它解析和显示其他东西(我使用NSJSONSerialization)。

提前致谢。

4

2 回答 2

1

理论上你可以使用:

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:bildurl]]];

但这是非常不可取的,因为所有下载都将在主线程上完成 + 没有缓存。您需要异步加载图像以实现平滑滚动。我建议使用https://github.com/rs/SDWebImage或 AFNetworking 的 UIImageView 扩展(https://github.com/AFNetworking/AFNetworking

于 2013-09-30T08:30:45.503 回答
0

您可以使用GCD (Grand Central Dispatch) 异步加载图像

使用它肯定会提高加载 tableview 的性能。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

    dispatch_async(queue, ^{
       UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:bildurl]]];

        dispatch_sync(dispatch_get_main_queue(), ^{
            [cell.artikelImage setImage:image];
            [cell setNeedsLayout];
        });
    });
于 2013-09-30T08:41:20.070 回答