是否存在为iPhone应用程序存储持久静态数据的“最佳实践”方法?
我有一个应用程序,它读取大约1000个项目的字典,其中很多是数组。我开始使用单个plist,它变得有点笨拙,特别是因为很多值都是HTML字符串。
我有更好的方法来解决这个问题吗?我计划大幅度扩展这个应用程序,我显然不想在中途改变我的方法。
我用Google搜索了iphone data storage
和变种,但是对于任何涉及最佳做法的内容都说不出来。
答案 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应用程序中使用过它。