1

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

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

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

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

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

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

这就是我之前对我以前客户的项目所做的方法。但该项目的应用程序包含不到一百张图片。而且,我觉得我做错了。

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

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

最后

我决定按照 Grager 的说法,迁移我的应用程序以使用 CoreData。但是,我可能会尝试先使用 writeToFile 来存储所有产品的信息,看看它是如何进行的。正如grager所说,尝试新事物也不错。最终,我们会得到一些东西。

4

1 回答 1

5

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

于 2012-05-08T09:14:29.310 回答