用于显示外部URL的多个图像的TableView模式

时间:2015-12-15 13:29:06

标签: ios

我有ViewController我希望UITableView包含5-30个用户个人资料(姓名,个人资料照片,关于我等),它是TabController中的一个标签。配置文件内容很少更改,但每周一次,添加/删除一些配置文件。

配置文件内容以我们服务器中的json对象的形式出现,我将其解析为[[String:Anyobject]]数组。
其中一个字段包含配置文件图片的URL(每个字段仅30kb)。

我的问题是:获取图片并在电视中显示这些图片的最佳模式是什么?

首先,我猜我最好只做一个网址请求,而不是30个人。我怎么能做到这一点?示例配置文件图像的URL是:

www.example.com/assets/profileImages/useriD.png.

第二,我应该首先将图片保存到CoreData,然后从那里获取它们(如果是这样的话?)或者我应该在单元格内执行URL请求,就像我设置配置文件一样名称等?

如果有人能指出我正确的方向,那将是非常棒的,谢谢!

2 个答案:

答案 0 :(得分:2)

除非您的服务器有这样做的方案,否则您无法在单个请求中获得多个图像。您需要为每个映像发出一个请求(尽管iOS和服务器应该合作以维护单个HTTP连接)。

你如何进行缓存取决于你,但是:

  • 您可以简单地依赖iOS缓存(前提是文件具有适当的Cache-Control / Expires标头),通过在您的缓存中设置适当的缓存策略,可能会更加坚持使用缓存NSURLRequest(例如ReturnCacheDataElseLoad

  • 您可以在解码图像的应用程序中添加一些本地缓存(UIImage)。视图控制器中的简单NSDictionary应该足够

  • 您可以将图像(编码数据)存储在磁盘上。如果这样做,您可能希望使用诸如SDWebImage之类的库,而不是重新发明轮子。 SDWebImage的文档包含大量示例,包括UITableView示例。

  • 您可以将图像(编码数据)存储在核心数据中,但它们的大小并不能成为理想的候选对象。

答案 1 :(得分:1)

jcaron说,SDWebImage为+1 {+1>。
它是一个非常强大的工具。您只需在cellForRowAtIndexPath中为每个UIImage添加网址链接,其余部分由SDWebImage处理。
这个lib以异步方式下载图像,性能疯狂,你也可以设置存储间隔。