iPhone长plist

时间:2010-05-29 22:00:09

标签: iphone uitableview iphone-sdk-3.0 plist

我想要添加到我的应用程序中的一些数据...大约650个类别(包括名称+ ID号),每个类别平均有85个项目(每个都有一个名称/ ID号)。

iPhone会支持这么大的plist吗?我想首先在UITableView中显示类别,当选择类别时我想显示所有相关项目。有这么大的plist,我不确定iPhone在加载物品时是否会滞后。超过51,000行似乎......它可能。

编辑:原始文本文件为2MB

4 个答案:

答案 0 :(得分:4)

plist可以是任意长度的。但是带有2 MB文本数据的plist是一个非常糟糕的主意。即使在桌面上,Apple也只推荐最大尺寸为几百KB的plist:

http://developer.apple.com/mac/library/documentation/cocoa/conceptual/propertylists/AboutPropertyLists/AboutPropertyLists.html#//apple_ref/doc/uid/10000048i-CH3-54402

原因是必须先将plist反序列化到内存中,然后才能从plist访问单个元素。这对于小型钳子来说很方便,但对于大型钳子来说,空间和时间效率极低。

您应该将数据加载到数据库中。如果你做得恰当,数据库只会引入你需要的数据集部分,而不是整个数据集。

答案 1 :(得分:1)

我怀疑加载你的plist可能需要一段时间,特别是如果你使用的是基于XML的plist。二进制plist可能更快。您可能需要考虑使用CoreData或原始sqlite数据库来存储数据。

唯一可以确定的方法是尝试并查看。没有什么比实际的表演时间更好。

答案 2 :(得分:0)

这似乎更适合用数据库预加载。一件事情应该稍微小一些......

技术是,编写代码来读取plist并将其放在SQLlite或CoreData中。然后将数据库从模拟器目录中取出,并将其添加到您的应用程序中 - 在应用程序启动时从项目中的文件中读取数据库。

如果您需要修改数据,请预先加载,但首先将数据库复制到可写目录中(或者基本上任何时候都不存在)。

答案 3 :(得分:0)

我认为你应该使用Sqlite。 这里有一个很棒的教程:

http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_5_iPhone_Application