10

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

我有一个应用程序可以读取大约 1000 个项目的字典,其中许多是数组。我开始为此使用单个 plist,但它变得有些笨拙,尤其是因为许多值都是 HTML 字符串。

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

我已经搜索了iphone data storage各种变体,但没有找到任何内容,甚至涉及到最佳实践。

4

7 回答 7

14

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

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

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

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

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

于 2009-06-01T14:08:54.380 回答
1

我会选择一个 sqlite 解决方案。我现在正在做的应用程序,只是帮助我学习 iPhone 开发的应用程序,大部分都使用 sqlite。我使用 Firefox 的 sqlite 插件来帮助维护数据库,效果非常好。https://addons.mozilla.org/en-US/firefox/addon/5817

正如 Alex 建议的那样,使用包装类也是最好的方法。

于 2009-06-01T14:17:22.490 回答
1

不要忘记在 3.0 中,您可以在 SQLlite 周围使用 CoreData 层,这可能会使它对您更有吸引力。

于 2009-06-01T20:35:27.640 回答
1

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

于 2009-06-03T07:43:06.340 回答
0

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

于 2009-06-01T13:46:00.370 回答
0

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

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

于 2009-06-01T13:46:16.547 回答
0

我所做的只是在应用程序关闭时保存状态。我为此使用了一个文件。

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

于 2009-06-01T13:50:35.447 回答