在iPad的存储空间内存储1000多张图像

Tar*_*w45 1 object ios

我正在使用的是iPad(仅限)的某种目录应用程序,用于我的客户公司.他们有1000多种产品.每个产品可以有多个图像.可以从Web服务设置每个产品是否在应用程序上显示.因此,例如,过期产品的数据和图像将不会存在于应用内.当我的客户决定与Web服务同步数据时.将刷新所有数据,将下载所有图像.必须删除任何过时的数据或未使用的数据.

问题是,他希望这个应用程序即使没有互联网连接也能脱机工作.

存储所有产品的数据很好,因为我从Web服务中提取JSON格式的所有数据并将它们解析为NSMutableDictionary对象.即使他们将包含1000多种产品的数据,它应该没问题(我猜).

但是对于图像,我不知道应该如何将它们保存在设备存储器中以及引用它们的最佳方式.每张图片的大小应为10Kb或更小.

我目前的方法(我能想到的)是

  • 将所有产品的数据存储在NSMutableDictionary中,并使用NSArchiver的方法archiveRoodObject:toFile(或者只使用[NSMutableDictionary writeToFile:atomically])
  • 以某种方式将所有图像存储在设备存储中
  • 创建一个数组/字典包含所有现有的图像名称和路径,用作参考并将其存储在NSArchiver中(或者也可以只使用[NSMutableDictionary writeToFile:atomically]).同步后不在此引用内的任何图像都将被删除.

这是我以前客户项目之前做过的方法.但该项目的应用程序包含不到100个图像.并且,我觉得我做错了.

所以,如果您有任何好的建议,请告诉我.欢迎任何建议.

注意:我阅读了一些关于将图像存储到CoreData中的封闭主题.但是,我现在不想尝试,因为我之前没有任何经验,而且这个当前的项目时间紧迫.所以,如果不是真的需要,我很乐意以后再尝试.

最后

我决定像Graver说的那样,迁移我的应用程序以使用CoreData.但是,我可能会先尝试使用writeToFile来存储所有产品的信息,看看它是怎么回事.正如格拉弗所说,尝试新事物也不错.最终,我们会得到一些东西.

gra*_*ver 5

您唯一的变化是使用CoreData.保留数据库中产品详细信息和图像的本地路径,但存储中的实际图片文件,即.应用程序的Documents目录中的目录.CoreData为您提供永远无法实现归档所有数据的性能.如果您没有使用CoreData的经验,我认为您可以节省阅读文档和实现它的时间,而不是考虑使用归档的复杂解决方案,保持文件跟踪等等.您将获得CoreData的经验,可以用于下一个项目:) 2合1

  • 是的,但使用`NSCachesDirectory`而不是`NSDocumentDirectory` (2认同)