不想抢杰森的回答,我还不能发表评论,所以只能在这里说。
好处是你可以直接访问模拟器的文件系统,就在你的 Mac 上。我现在离开了我的电脑,否则我可以告诉你具体在哪里找到它,但我只需将 db 文件的名称放入 Spotlight 中进行搜索即可。
你也不需要编写任何代码来填充数据库,因为你可以使用命令行工具进行初始设置,如果更方便的话。
但你需要将它复制过去,因为资源存储在应用程序包的只读签名部分中。
我将进一步阐述Jason的答案,我已将我的帖子标记为社区wiki,因此我不应该因此获得任何积分。
他所说的并不是虚拟应用程序 - 按照正常方式编写应用程序,但在调用填充plist的代码之前,请检查主捆绑包中是否存在数据库。您可以在模拟器中运行它,取出生成的sqllite数据库,并将其添加到您的项目中 - 如果您只需要从中读取,则可以从主捆绑目录中读取它。如果您需要进行进一步的写入操作,则将其复制到可写文档区域,并从那里使用它。因此,对于主要用户,永远不会调用填充DB的代码...
唯一的缺点是您还需要包含您正在读取的plist文件,即使您只需要数据库。您可以创建一个不同的构建目标,它是主要构建目标的副本,唯一的区别是它保存了plist文件,而您为应用商店构建的主要目标则没有。
我曾经使用sqlite时遇到了和你一样的问题,在大量插入数据时速度非常慢。因此,最好的方法是直接提供一个填充好的sqlite数据库。
除了使用INSERT INTO来填充sqlite数据库之外,还有另一种方法。你可以为每个表生成一个csv文件,并使用计算机和sqlite shell将其加载到表中:
只需要两个简单的命令:
.separator SEPARATOR
.import FILE TABLE
例子:
adslol:~ user$ sqlite3
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .separator ;
sqlite> .import myData.csv nameOfMyTable
sqlite> .quit
我希望这是您正在寻找的内容 :)
如果您需要一个好的sqlite3客户端,请尝试SQLite Manager,它是一个Firefox插件。