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

Posted

技术标签:

【中文标题】内容繁重的 iPhone 应用程序的数据格式 - Plist 还是 XML?【英文标题】:Data format for content heavy iPhone app - Plist or XML? 【发布时间】:2010-06-02 22:15:04 【问题描述】:

我正在构建一个本质上是一本书的 iPhone 应用程序,它将与大量文本内容捆绑在一起。

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

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

我还不确定捆绑的内容会有多大,但我应该想象它可能在 500k 到 4MB 之间。

【问题讨论】:

应该提到 - 内容必须是人类可读的,所以 sqllite 等是不可能的。 【参考方案1】:

属性列表是任何从 NSObject 派生的本机序列化格式。可变状态保存存在一些问题,但总体而言,plist 是 Apple 首选的格式。NSData 提供了一些解析方法,可以抽象出标记的细节。对于 XML,您需要编写自己的解析器。

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

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

【讨论】:

感谢您的评论。我知道 plist 文件是 XML,如果使用纯 XML 有任何性能差异,我很感兴趣?【参考方案2】:

根据我的经验,从长远来看,plist 更容易维护并且更好。我有类似的情况并编写了一个应用程序,该应用程序使用所有相同的 API 生成我的应用程序读取的数据文件,无需额外设置。它一触即发(只要你熟悉 Cocoa。)

它甚至可以通过 iPhone SDK 中包含的属性列表编辑器应用程序进行人类阅读。虽然我不建议手动将它用于非常大的数据结构,但这就是为什么我提到我如何为此构建另一个应用程序 - 生成数据和使用它的代码几乎有 1:1 的比较,它们是如此相似。 plist 编辑器在调整项目或编辑中小型数据时非常方便,而且它再次隐藏了底层 XML。

【讨论】:

【参考方案3】:

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

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

...然后繁荣,您正在使用本机对象。对我来说,这比阅读 plist 更容易。

【讨论】:

【参考方案4】:

为什么不将内容作为 html 发送? (可能分成章节或类似的部分)

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

【讨论】:

有趣的想法,绝对值得思考。

以上是关于内容繁重的 iPhone 应用程序的数据格式 - Plist 还是 XML?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 Android 数据库用于 iphone 应用程序?

自己的 iPhone 数据格式

wps怎么筛选出重复的内容

iOS:如何创建从服务器下载数据的应用程序?

iPhone通过数据库更新UI内容可以被APP store接受吗?

KnockoutJS:我应该如何处理繁重的小部件初始化代码?