在iPad存储器中存储1000多张图片

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

事情是,他希望这个应用程序脱机工作,即使没有互联网连接。

当我从Web服务中以JSON格式提取所有数据并将它们parsing为一个NSMutableDictionary对象时,存储所有产品的数据都没问题。 即使他们将包含1000+产品的数据,应该是罚款(我猜)。

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

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

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

这是我之前从事客户项目的方法。 但该项目的应用程序包含不到一百个图像。 而且,我觉得我做错了。

所以,如果你有什么好的build议,请告诉我。 任何build议,欢迎。

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

最后

我决定像Graver说的那样,把我的应用程序迁移到使用CoreData。 但是,我可能会先尝试使用writeToFile来存储所有产品的信息,看看它是如何发生的。 正如Graver所说,尝试新事物并不坏。 最终,我们会得到一些东西。

你唯一的变化就是CoreData。 将产品的详细信息和图像的本地path保存在数据库中,但保存在存储器中的实际图像文件,即。 应用程序的Documents目录中的目录。 CoreData为您提供的性能永远无法实现归档所有的数据。 如果您对CoreData没有经验,那么我认为您可以节省阅读文档和实施文档的时间,而不是考虑复杂的归档解决scheme,保持文件的跟踪等等。而且您将在下一个项目中使用CoreData 🙂 2合1