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

我有几个市场上的iOS应用程序,并在他们所有的我有一个小的SQLite数据库文件连接到应用程序,以提供用户我的数据。 一旦安装,用户通过更改某些选项来定制这个数据库。

到目前为止,所有这些应用程序都将数据库存储在NSDocumentsDirectory 。 在提交上次更新之后,由于将数据存储在错误的位置而被拒绝。 对于拒绝的应用程序,我将存储位置更改为NSCachesDirectory 。 我现在担心caching将被清除,并删除用户定制。 该应用程序仍然会运行,数据库将得到重新创build,但所有更改的表将被重置,从而扰乱用户。

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

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

你的数据库听起来不像文档,听起来像用户不应该知道的私有caching。 我build议你创build一个目录,如(application_home)/Library/Database并保存文件。 你提到的cachingpath听起来不像是我最好的select。

在提交另一个应用程序之前,您应该真正查看整个iOS的文件系统编程指南 。

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

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