0

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

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

存储这么多文件并在显示 TableView 时有效地使用它们的最佳方法是什么?

4

2 回答 2

1

我会告诉你我将如何做,但在我想警告你从 Internet 下载文件并将它们存储在你的应用程序中之前。

最近我的一个应用程序被 Apple 拒绝了,因为我违反了App Store 审查指南中的 2.23 条规则:

2.23 应用程序必须遵循iOS 数据存储指南 ,否则将被拒绝

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

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

并且由于缓存文件夹可以在需要时被 iOS 删除,因此您应该将您的应用程序设计为准备再次下载图像以防它们消失,因此请记住这一点。

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

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

我希望这可以帮助你。顺便说一句,这是我的做法,但我并不是说这是你问的“最好的方法”:)

于 2012-09-28T17:48:26.290 回答
0

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

如果你不熟悉 Core Data,你可以从这里开始阅读。开始有点令人生畏,但是一旦你完成了一个教程,它就非常简单,会让你的生活更轻松。

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

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

[[UIImage alloc] initWithContentsOfFile:filePath];

这将放置在您的:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

功能,以便您可以将图像设置在您想要的位置。

于 2012-09-28T17:51:10.483 回答