【问题标题】:iOS Data Storage Guidelines issues for a backwards-compatible app向后兼容应用程序的 iOS 数据存储指南问题
【发布时间】:2013-10-19 08:07:26
【问题描述】:

我正在开发一个必须支持 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 项目的 Supported Files 中,并且一些初始数据是从应用程序内部插入的,并且不可下载。依赖于用户的数据,嗯,我可以随时下载。我没有在我的应用程序中集成任何 iCloud 的东西。那么,将.sqlite 文件始终保留在文档中是否正确? AFAIK,您需要该文件才能执行所有数据库操作...

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

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

非常感谢!

【问题讨论】:

    标签: ios database file data-storage nsdocumentdirectory


    【解决方案1】:

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

    您下载的图像可能应该在缓存中,但您也可以将它们放在文档中,只要您设置“不备份”属性。

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

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

    【讨论】:

    • 谢谢!如何设置该属性?
    • 我是否应该为Documents中的所有文件设置属性,因为我没有与iCloud集成?
    • 在答案中添加了用于设置属性的代码。不,您不应该在所有内容上都设置它,因为这会将文件从手机备份中排除,您当然希望备份数据库。
    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2018-06-26
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多