我应该在哪里存储我的iPhone应用程序的SQLite数据库?

问题描述:

我有几个iOS应用程序在市场上,并在他们所有的我有一个小的SQLite数据库文件连接到应用程序,以提供用户与我的数据。一旦安装,用户通过更改某些选项来自定义此数据库。我应该在哪里存储我的iPhone应用程序的SQLite数据库?

到目前为止,所有这些应用程序都将该数据库存储在NSDocumentsDirectory中。在提交我的上次更新之后,由于将数据存储在错误的位置而被拒绝。对于被拒绝的应用程序,我将存储位置更改为NSCachesDirectory。我现在担心缓存将被清除并清除用户定制。该应用程序仍然可以正常工作,数据库将被重新创建,但所有更改的表格都将被重置,从而扰乱用户。

这种类型的数据库文件应该存储在哪里?我是否有权将它放入Docs目录中?根据Apple的说法,Docs dir针对的是“关键数据”,它是用户生成的数据或正确操作应用程序所需的数据。我觉得它属于这一类,坚持我的用户设置是正确的操作,但谁想要等待上诉?

iOS的Apple文件系统编程指南将(application_home)/Library路径描述为“为要备份但未向用户公开的文件创建自定义子目录”的地方。 (application_home)/Documents路径被描述为“该目录的内容可以通过文件共享提供给用户。”

您的数据库听起来不像文档,它们听起来像用户不应该知道的私有缓存。我建议你创建一个目录,如(application_home)/Library/Database并保存文件。你提到的缓存路径听起来不像是我最好的选择。

在提交其他应用程序之前,您应该真正查看整个file system programming guide for iOS

+0

很好的回复,谢谢! – Lkabo 2012-02-19 14:34:50

如果您的数据库确实包含用户生成的内容,那么Doc​​uments目录就是它的适当位置。

不过,你提到,你是坚持“用户设置” ......如果你坚持的数据更类似于设置或偏好,那么他们就应该驻留在默认子系统。请参阅NSUserDefaults的文档。

+1

感谢您的回复,我也使用了错误的措辞与“坚持”。我的意思,以保持用户对数据库的修改,以上回答暗示图书馆目录集可能是正确的位置。在寻找到这一点,我发现一个更合适的位置可能是库/ Application Support目录。我将尝试对存储在那里的数据运行一些测试试验.. – Lkabo 2012-02-19 14:40:02