0

我创建了一个应用程序,它以有组织的方式显示有关文化场所的信息。信息可能会发生变化,所以我希望它是从网上下载的。但不是每次。只是偶尔一次,因为信息不会经常变化。

我想做的是,用户第一次打开应用程序时,它会从网上下载所有数据。目前,我从一个 xml(大约 100Ko)中解析它,并得到一个“CulturalPlace”对象的 NSMutableArray。但它很慢。而我想做的是,在本地存储这些数据(如果用户有一个 iPod touch 并且不在 wifi 上,或者如果他在 EDGE 上并且不想重新下载所有数据)。因此,用户只需单击屏幕右上角的“更新按钮”即可更新数据。否则它从磁盘读取它。

我真的不知道什么是最好的解决方案。我考虑过 Core Data,但我有几个 Tableview 叠瓦(Rootviewcontroller > ListofPlacesViewController > PlaceViewController),我真的找不到像我这样简单使用的好教程。(iTunes“TopSongs”示例代码似乎太复杂了)。

我还考虑过不解析 xml,而是尝试使用 NSURLConnection 并获取 plist 文件。但我从来没有设法从本地文件中读取任何内容。

所以我的主要问题是,我应该保留 xml 解析方法,还是应该使用其他格式从网络传输数据?存储和读取自定义对象的 NSMutableArray 数据的最佳方法是什么?

在此先感谢您的帮助,对不起我的大概英语。

4

3 回答 3

0

您可以使用HTML5' localStorage。PC 上的 Chrome 和 FF 以及 Mac OS 和 iPhone 上的 Safari 都支持它(据我所知)。它就像一个本地数据库。请记住,如果用户选择清除所有 cookie(或“私人设置”),您的存储空间就会消失。

于 2010-01-31T19:39:27.823 回答
0

您可以选择在本地存储 XML,并在 NSUserDefaults 中存储上次更新的日期 - 然后在应用程序启动时,您可以检查是否有新文件。

ASIHTTPRequest使说“将此 URL 的内容保存到文件”变得非常容易。因此,您始终将 XML 保存到文件中,并且始终从该文件中读取或获取 XML(如果尚未存在)。

于 2010-01-31T21:28:43.447 回答
0

根据我的经验,XML 的解析确实比 plist 慢得多,尽管它们在技术上是相同的。幸运的是,plist 很容易处理,API 负责所有归档和取消归档。

一旦您将数据存储在内存中,将其转换为更快的 plist 表示可能不会太难,请查看此文档以获取更多信息:http: //developer.apple.com/iphone/library/documentation/ Cocoa/Conceptual/Archiving/Archiving.html

如果您的应用程序分为不同的页面,您还可以考虑将文件拆分为单独的文件,并仅在需要时解析/取消归档您需要的信息(如果您在单独的线程上执行此操作并在主线程,延迟可能对用户来说几乎不是问题)。

于 2010-01-31T21:43:00.520 回答