【问题标题】:Database directory issue数据库目录问题
【发布时间】:2015-03-31 03:45:47
【问题描述】:

我们的应用程序已被 Apple 拒绝,并表示以下指示:

“请确认只有用户使用您的应用程序创建的内容(例如文档、新文件、编辑内容等)由 iCloud 根据 iOS 数据存储指南的要求进行备份。此外,请检查是否有任何临时文件您的应用程序使用的文件仅存储在 /tmp 目录中;如果确定不再需要存储在此位置的文件,请记住删除或删除它们。

可以重新创建但必须保留以使您的应用正常运行的数据 - 或者因为用户希望它可以离线使用 - 应使用“不备份”属性进行标记。对于 NSURL 对象,添加 NSURLIsExcludedFromBackupKey 属性以防止相应文件被备份。对于 CFURLRef 对象,使用相应的 kCRUFLIsExcludedFromBackupKey 属性。"

我们很惊讶,因为我们的数据库在 Library 根文件夹中(而不是在 Caches 中),并且没有内容存储在 Documents 文件夹中。那么,为什么他们引用与 Documents 文件夹相关的 iCloud 和数据存储指南?

https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1

非常感谢您的帮助。

【问题讨论】:

    标签: ios sqlite


    【解决方案1】:

    您的应用程序的数据库在库文件夹中与 iCloud 备份无关。据推测,您已经启用了 iCloud。因为你只有一个数据库,所以一切都会被备份。

    相反,如果您的数据库包含非用户特定的种子数据或可下载数据,您应该将其与用户数据分开。创建第二个数据库并为 iCloud 启用一个,另一个不启用。

    话虽如此,由于经常损坏的数据库文件,有人认为 sqlite 和 iCloud 不能很好地混合。考虑到你的报告,这似乎是真的。

    最好改用Core Data。我已经完成了许多 sqlite 到 Core Data 的迁移,比如从 Android 应用程序。在您让您的核心数据与其他数据库(在线、其他移动平台)很好地配合之后,您会发现您可以编写优雅而简洁的代码,并且性能非常好。

    Apple 将让您有机会发布一条简短消息,说明您在重新提交时所做的更改。

    祝你好运!

    【讨论】:

    • 您好,我们没有启用 iCloud,并且数据库都是关于应用信息数据的,与用户无关。我认为 Apple 在这个问题上不公平。
    • 也许您无意中启用了 iCloud?无论如何,这就是Apple的信息所说的。在这种情况下,只需禁用 iCloud。如果您感到困惑,请通过回复表联系苹果,他们通常会很快回复并且非常友好。
    猜你喜欢
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    相关资源
    最近更新 更多