是否有任何“最佳实践”方法来存储iPhone 应用程序的持久静态数据?
我有一个应用程序可以读取大约 1000 个项目的字典,其中许多是数组。我开始为此使用单个 plist,但它变得有些笨拙,尤其是因为许多值都是 HTML 字符串。
我有更好的方法来解决这个问题吗?我计划显着扩展这个应用程序,我显然不想在中途改变我的方法。
我已经搜索了iphone data storage
各种变体,但没有找到任何内容,甚至涉及到最佳实践。
听起来您打算与您的应用程序一起分发一些数据。属性列表可能是最容易维护的,但它会一次全部加载到内存中。这可能会占用大量设备的内存。
另一方面,sqlite 数据库将仅加载您请求的数据。我不确定您的数据是如何构造的,但是您可以很容易地使用单个数据库表创建键值对。(带有一key
列和一value
列的单个表)然后,如果是我,我会编写一个 Objective-C 类来包装数据库查询,这样我就可以编写简单的语句,例如:
NSString *welcomeText = [[MyData sharedData] dataWithKey:@"WelcomeText"];
首先将数据放入数据库并不难。您可以使用命令行sqlite3
实用程序批量加载数据。有一个命令.import
可以从文本文件中导入您的数据。
希望这能让你朝着正确的方向前进!
我会选择一个 sqlite 解决方案。我现在正在做的应用程序,只是帮助我学习 iPhone 开发的应用程序,大部分都使用 sqlite。我使用 Firefox 的 sqlite 插件来帮助维护数据库,效果非常好。https://addons.mozilla.org/en-US/firefox/addon/5817
正如 Alex 建议的那样,使用包装类也是最好的方法。
不要忘记在 3.0 中,您可以在 SQLlite 周围使用 CoreData 层,这可能会使它对您更有吸引力。
如果您不需要存储有关数据的任何关系信息,为什么不直接使用文件呢?会浪费一些文件系统空间,但纯文件可能是最节省内存和 CPU 的解决方案,具体取决于项目的大小和数量。
我从未开发过 iPhone 应用程序,但我在文件系统中玩过。我已经看到 sqlite 数据库在手机的各个地方浮动。我很确定它使用 sqlite 数据库来存储您的日历条目。
我会使用sqlite。它已经存在,易于使用,并将为未来的扩展提供最灵活的路径。
我一直在我的 iPhone 应用程序中使用 sqlite 来处理静态数据。
我所做的只是在应用程序关闭时保存状态。我为此使用了一个文件。
sqlite 听起来非常适合您的应用程序。sqlite 很简单。我在 Adobe AIR 应用程序中使用过它。