针对向后兼容的应用程序的iOS数据存储指南问题

时间:2013-10-11 09:33:32

标签: ios database file data-storage nsdocumentdirectory

我正在开发一款必须支持iOS 5+的iOS应用。我已阅读iOS Data Storage Guidelines以准备提交的应用程序,并在Stackoverflow中阅读有关这些指南的几个问题和解决方案,但我仍然对如何处理此问题有一些疑问。

我有一个sqlite数据库,其表在.sqlite文件中定义。当应用程序启动时,我将此文件复制到\Documents文件夹中,并且我始终将此文件保存在\Documents中。该数据库首先包含应用程序可能需要的一些固定数据集合(要选择的城市列表和类似的东西),其余的是将下载的用户相关数据。我读过这篇文章:Apps must follow the iOS Data Storage Guidelines or they will be rejected in app that contains .sqlite3,但我仍然不知道应该采用什么标准。 .sqlite不可下载,它包含在Xcode项目的受支持文件中,并且一些初始数据是从应用程序内部插入的,并且既不可下载。用户相关的数据,我可以随时下载它。我没有在我的应用中集成任何iCloud内容。那么,将.sqlite文件始终保留在Documents中是否正确? AFAIK,您需要该文件来执行所有数据库操作...

正如我所说的,我没有在我的应用程序中包含任何与iCloud相关的代码,事实上我不知道iCloud是如何管理的,因为我从来没有告诉过它,是应用程序的备份呢?我应该使用iOS Data Storage Guidelines所说的标志来防止文件被备份吗?我需要一些关于备份和iCloud注意事项的指导。

还有另一件事:我的应用程序还会下载一些与用户相关的图像。我在整个应用程序中的几个视图中显示它们,因此我需要它们在应用程序正常工作时保持不变。但是,它是可下载的内容。那么,我应该把它们放在哪里?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我相信你的.sqlite文件应该在Documents中,这是它的正确位置。

您下载的图片可能应该在缓存中,但只要您设置“请勿备份”属性,您也可以在文档中使用它们。

您可以像这样设置跳过备份属性:

    BOOL success = [url setResourceValue: [NSNumber numberWithBool: skip]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];