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

时间:2012-02-19 04:38:43

标签: ios iphone database sqlite

我在市场上有几个iOS应用程序,在所有这些应用程序中,我有一个连接到应用程序的小型SQLite数据库文件,以便为用户提供我的数据。安装后,用户可以通过更改某些选项来自定义此DB。

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

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

3 个答案:

答案 0 :(得分:32)

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

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

在提交其他应用之前,您应该检查整个file system programming guide for iOS

答案 1 :(得分:0)

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

但是,您提到您正在坚持"您的用户设置" ...如果您持久存储的数据更类似于设置或首选项,那么它们应该驻留在默认子系统中。请参阅NSUserDefaults的文档。

答案 2 :(得分:0)

6年更新:

将数据存储在NSCachesDirectory中会导致错误,正如预期的那样,用户自定义数据会在设备感觉到时擦除。经过多次尝试与Apple应用程序评论争论点后,我终于发布了一个更新,其中数据现在存储在NSDocumentsDirectory(应该是)的自定义目录中,这解决了上述所有问题。的问题。