内容繁重的iPhone应用程序的数据格式 - Plist或XML?

时间:2010-06-02 22:15:04

标签: ios iphone xml plist

我正在构建一款基本上是一本书的iPhone应用程序,它将捆绑大量文字内容。

我考虑将数据捆绑为XML并在应用程序启动时加载它,但XML将包含许多嵌套结构,并且解析起来有点麻烦。

使用plist会更好吗?我关心内存使用情况,并且plists完全加载到内存中 - 它们可以在块中解析吗? plist是否有最大尺寸以及效率如何?

我不确定捆绑内容会有多大,但我认为它可能在500k到4MB之间。

4 个答案:

答案 0 :(得分:2)

属性列表是从NSObject派生的任何内容的本机序列化格式。可变状态保存存在一些问题,但整体plist是Apple首选的格式。有一些NSData可用的解析方法可以抽象出标记的细节。至于XML,你需要编写自己的解析器。

您可以参考this了解更多详情。

应该注意plist文件本身是严格的XML;在选择plist时,在服务器端,您应该能够解析plist XML并将每两个节点视为键值对。

答案 1 :(得分:1)

根据我的经验,从长远来看,plist更容易维护和更好。我有类似的情况,写了一个应用程序生成我的应用程序使用所有相同的API读取的数据文件,没有额外的设置。它已经开始运行(只要你熟悉Cocoa。)

使用iPhone SDK中包含的属性List Editor应用程序甚至可以读取它。虽然我不建议手工制作非常大的数据结构,但这就是为什么我提到我是如何构建另一个应用程序的 - 生成数据并使用它的代码几乎有1:1的比较,它们是相似的。 plist编辑器非常方便调整项目或编辑中小型数据,并再一次隐藏了基础XML。

答案 2 :(得分:0)

如果人类可读性是设计目标,则应考虑使用JSON。对于每个应用程序来说,这不是正确的答案,但需要考虑。开源json-framework(这里:http://code.google.com/p/json-framework/)是GREAT,它提供了非常方便的方法,用于将JSON字符串编码和解码为对象,作为NSString上的一个类别。所以你可以说:

NSString *jsonString = ...// however you're loading the goods
NSDictionary *myData = [jsonString JSONValue];

......并且热潮,你正在使用本机对象。对于我的钱,这比阅读一个plist更容易。

答案 3 :(得分:-1)

为什么不将内容作为HTML发送? (也许分成章节或其他一些)

通过这种方式,您可以立即通过WebView显示它,而无需进行任何解析或重新格式化。