通过JSON将图像数组加载到tableview图像视图中

时间:2013-09-30 08:14:46

标签: objective-c json uitableview nsjsonserialization

我想知道通常是否可以通过网址将图片加载到UIImageView tableview中。 JSON }。

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

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

我知道我的解析代码有效,因为我让它解析并显示其他内容(我使用 NSJSONSerialization )。

提前致谢。

2 个答案:

答案 0 :(得分:1)

理论上你可以使用:

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

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

答案 1 :(得分: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];
        });
    });