静态数据的属性列表或sqlite?

时间:2009-06-01 13:43:30

标签: iphone sqlite plist

是否存在为iPhone应用程序存储持久静态数据的“最佳实践”方法?

我有一个应用程序,它读取大约1000个项目的字典,其中很多是数组。我开始使用单个plist,它变得有点笨拙,特别是因为很多值都是HTML字符串。

我有更好的方法来解决这个问题吗?我计划大幅度扩展这个应用程序,我显然不想在中途改变我的方法。

我用Google搜索了iphone data storage和变种,但是对于任何涉及最佳做法的内容都说不出来。

7 个答案:

答案 0 :(得分:14)

听起来您打算在应用程序中分发一些数据。属性列表可能是最容易维护的,但它将一次性加载到内存中。这可能会占用设备的大量内存。

另一方面,sqlite数据库将仅加载您请求的数据。我不确定您的数据是如何构建的,但您可以使用单个数据库表轻松创建键值对。 (带有key列和value列的单个表然后,如果是我,我会编写一个Objective-C类来包装数据库查询,这样我就可以编写简单的语句,如:

NSString *welcomeText = [[MyData sharedData] dataWithKey:@"WelcomeText"];

首先将数据放入数据库并不困难。您可以使用命令行sqlite3实用程序批量加载数据。有一个名为.import的命令可以从文本文件中导入数据。

希望这能让你朝着正确的方向前进!

答案 1 :(得分:1)

我会使用sqlite解决方案。我正在处理的应用程序,它们只是帮助我学习iPhone开发的应用程序,大多数都使用sqlite。我使用firefox的sqlite插件来帮助维护数据库,这非常有效。 https://addons.mozilla.org/en-US/firefox/addon/5817

正如亚历克斯建议使用包装类也是最好的方法。

答案 2 :(得分:1)

不要忘记3.0,你可以在SQLite周围使用核心数据层,这可能会让你更有吸引力。

答案 3 :(得分:1)

如果您不需要存储有关数据的任何关系信息,为什么不直接使用文件?将会有一些浪费的文件系统空间,但普通文件可能是内存和CPU效率最高的解决方案,具体取决于项目的大小和数量。

答案 4 :(得分:0)

我从未开发过iPhone应用程序,但我在文件系统中玩过。我看到sqlite数据库漂浮在手机的各个地方。我很确定它使用sqlite数据库来存储你的日历条目。

答案 5 :(得分:0)

我会使用sqlite。它已经存在,易于使用,并将为未来的扩展提供最灵活的途径。

我一直在我的iPhone应用程序中使用sqlite来获取静态数据。

答案 6 :(得分:0)

当应用程序关闭时,我所做的只是保存状态。我用了一个文件。

sqlite听起来非常适合您的应用。 sqlite非常简单。我在Adobe AIR应用程序中使用过它。