Iphone 多图像存储与表视图处理

Iphone 多图像存储与表视图处理,iphone,xcode,image,uitableview,Iphone,Xcode,Image,Uitableview,尽管围绕这个话题有很多主题,但在以下情况下,我似乎非常沮丧:( 该应用程序下载并解析一个JSON,其中包含大约1000个对象,这些对象的属性链接中包含一个小图像。我需要下载(一次)这些图像,存储它们并在我的TableView中作为图标使用 在显示TableView时,存储如此多的文件并有效使用这些文件的最佳方法是什么?我将告诉您如何操作,但在此之前,我想向您发出一个关于从Internet下载文件并将其存储在应用程序中的警告 最近,我的一个应用程序被苹果拒绝,因为我违反了第2.23条规则,其中规定

尽管围绕这个话题有很多主题,但在以下情况下,我似乎非常沮丧:(

该应用程序下载并解析一个JSON,其中包含大约1000个对象,这些对象的属性链接中包含一个小图像。我需要下载(一次)这些图像,存储它们并在我的TableView中作为图标使用


在显示TableView时,存储如此多的文件并有效使用这些文件的最佳方法是什么?

我将告诉您如何操作,但在此之前,我想向您发出一个关于从Internet下载文件并将其存储在应用程序中的警告

最近,我的一个应用程序被苹果拒绝,因为我违反了第2.23条规则,其中规定:

2.23应用程序必须遵循 否则他们将被拒绝

由于苹果最近正在使用iCloud,你应该尽量减少每个应用程序上传的流量,因此你的应用程序文档文件夹中存储的流量不应该超过40MB。他们还说(如果你阅读了我提供的链接):

可以再次下载或重新生成的数据应存储在 /Library/Caches目录

如果需要的话,iOS可以删除缓存文件夹,因此你应该设计你的应用程序,以便在图像丢失时再次下载图像,所以请记住这一点

现在对于我的解决方案,我认为下载1000个文件太多了(即使它们是小文件)。我建议您将文件保存在服务器上的ZIP文件中,以便在下载后将其下载并解压缩到光盘上。这将更简单、更实用。您可以查看如何在应用程序中进行压缩和解压缩

解压缩文件后,我建议使用一个小型数据库(SQLite),从中加载文件名,将这些名称存储在一个数组中,然后使用此数组填充函数
cellforrowatinexpath
中表中的图像


我希望这对您有所帮助。顺便说一句,这是我的方法,但我并不是说这是您要求的“最佳方法”:)

鉴于您希望保持这些图像/数据的持久性,您现在有两个选择:您可以自己管理它们,或者您可以利用核心数据来帮助您做到这一点。我推荐核心数据

如果你不熟悉核心数据,你可以开始阅读。刚开始的时候有点让人畏缩,但是一旦你完成了一个任务,它会非常简单,会让你的生活变得更加轻松

如果您想自己存储图像,或者想要更高效的核心数据结构,我建议您将所有图像写入文档目录,如所示。然后,您可以将文件路径字符串存储在CD结构中,或者手动存储在plist中

最后,要将它们加载到TableView中,您可以使用这些存储的图像路径加载UIImage:

[[UIImage alloc]initWithContentsOfFile:filePath]

这将放在您的:

-(UITableView单元格*)tableView:(UITableView*)tableView单元格for行索引路径:(nsindepath*)indepath


功能,以便您可以将图像设置为所需位置。

是否要下载并永久存储这些图像一次?还是每次只跑一次?换言之,您希望将它们存储在活动内存中还是存储在磁盘上以供以后使用?我希望存储这些图像…比方说永远。在diskYep上,我还解决了处理一堆小文件的问题(在建立ie连接时浪费了大量时间),这只是一种糟糕的风格。。。我告诉这个网站和安卓开发者,但问题是安卓客户端的当前版本已经在使用这种结构(我不知道是坏是坏,但仍然在做这项工作)…所以我必须处理大量的小图像:(非常感谢您提供的信息!!这可能对我的下一步非常重要,非常感谢…首先,我想我会尝试在一次运行中下载zip…其他任务可能不涉及DB使用…最后一个问题:您用这种技术修复了什么样的应用程序?首先,欢迎您。其次,我有一个音乐应用程序,其中有一个部分t在每个单元格中显示歌曲描述和一个小图像。可以动态添加新歌曲并从服务器自动下载(确保我的应用程序是客户端-服务器风格)。用于多次下载(但数字较小,5到10个文件)我使用了异步
NSURLConnection
,但是对于1000个文件,你不能做这么多的异步连接,你需要对它们进行压缩…可能他们认为你真的在威胁iTunes),但是这显示了区别!我需要在应用程序开始时下载一次“大”目录,在以后的情况下下载较小的目录(我想不超过100次)。它们不应该是即时的,但越快越好——没有人喜欢等待。卷不会超过10 mb…我认为DB的使用在这里很奇怪-我已经有了。请使用包含对象详细信息的字典…只需要清楚地处理图像…=|谢谢!我想主要的问题是在这里下载…如果它们保存在Documents目录中,那么对于这么多的文件来说,这不是很好吗?一旦您成功下载了这些文件,您的Documents目录中可以有多少文件就没有限制了。使用核心数据管理文件路径和其他元数据将允许您仅加载当前需要的路径。