下载图像并在表格单元格上显示(并发)

时间:2016-09-18 13:44:20

标签: ios swift alamofire nsoperation nsoperationqueue

我的应用程序在tableView单元格中显示图像我想要实现的是按顺序加载图像,即使单元格已从屏幕上消失。例如,我有单元格1到100,显示单元格,即使用户已经滚动到单元格78,图像也开始在后台从1到100下载。我还想只下载一到两个一次成像,所以我不会弄乱网络。考虑到这些标准,我想知道哪种设置最合适?

目前,我正在使用AlamoFire下载图片。 Alamofire和某种NSOperationQueue的组合是否合适。在这个阶段我对NSOperationQueue非常不熟悉。所以我想在开始深入设置NSOperationQueue之前,我会尝试找一个推荐的行业实践

即使应用程序处于后台,我也希望将功能组合起来继续下载

请注意。也欢迎任何替代的库或框架解决方案

1 个答案:

答案 0 :(得分:0)

最佳解决方案是SDWebImage。该存储库的链接是here。 如果你想以自己的方式做而没有任何依赖,那么你必须遵循SDWebImage所做的相同事情。

简而言之,

  • 在线程中异步启动下载,同时从URL下载图像。
  • 然后下载后,使用NSCache来存储图像并使用 imageURL作为关键。
  • 将图像存储在NSCache后,还要将图像写入NSCacheDirectory,图像名称与其网址相同。

现在,在提取时,您必须检查NSCache中是否存在图像,使用imageURL作为关键字,您可以轻松搜索该图像。如果找到,则返回图像,然后搜索NSCacheDirectory,无论图像是否存在。如果没有,那么您必须下载图像并再次按照步骤操作。

现在NSCache就像RAM一样。只要应用程序处于活动状态,存储在那里的数据就会保留在那里。终止后,NSCache中的数据将被清除。 因此,我们还在NSCacheDirectory中编写文件,因为只要应用程序未从设备中删除,此处的数据就会持续存在。

我希望我能让你理解这件事是如何运作的。 欢呼声。