如何在swift中将图像从数组下载到tableviewcontroller?

时间:2015-03-08 20:47:47

标签: arrays xcode image swift nsmutablearray

我有一个表视图控制器,其中包含一个包含UIImageView的单元格。我还有一个包含url的NSMutableArray。我希望网址下载图片并按正确顺序放置。 NSMutableArray还包含一些空字符串以及它对应的单元格我想从我的图像资源中获取占位符图像。

我怎样才能让它发挥作用?我还用标题和摘要填充每个单元格,但无法锻炼图像如何工作。

更新

用于图像下载的代码。请注意,photoLabels包含图像数组。一旦第一个占位符图像出现(有一个索引较晚),有些照片位于不正确的位置。为什么这样做呢。有谁知道为什么。我有println(photoLabels),所有50个字符串都是正确的(有些只是""

如果有人能提供帮助那就太棒了。

let imageURL: String = photoLabels.objectAtIndex(indexPath.row) as String
println(imageURL)
if imageURL == "" {
    cell.imageContainer.image = UIImage(named: "placeholder")
} else {
    cell.imageContainer.setImageWithURL(NSURL(string: imageURL))
}

return cell

由于

1 个答案:

答案 0 :(得分:1)

这个看似无辜的问题实际上需要一个有趣细节的老鼠窝。其中包括:

  • 使用延迟加载图片,及时加载图像,而不是尝试预先下载;
  • 异步下载图像;
  • 在根据需要下载图片时,请缓存它们(使用NSCache,而不是NSMutableArray),这样如果您向后滚动以查看最近下载的某些图片,则无需再次下载;
  • 但是,为了响应内存压力,请确保清空基于RAM的缓存(但仍然可以使用持久存储缓存);
  • 如果用户快速向下滚动到表格示例中的第100行,请确保可见单元格的图像不会在前99个图像的请求后面积压(nb:您应该在次优条件下测试您的应用程序)例如,可以用网络链路调节器模拟的2G或3G蜂窝环境差;和
  • 您可能需要显示占位符图像,直到下载(或从缓存中检索)异步检索的图像。

最重要的是,这需要花费大量精力才能正常完成。因此,我们建议您使用现有解决方案,例如SDWebImageAFNetworking中提供的UIImageView类别。这两个框架都为UIImageView提供了一个很好的类别,允许您请求异步下载图像(在SDWebImage中为sd_setImageWithURL;在AFNetworking中为setImageWithURL