2015-01-31 101 views
0

我们的应用程序已经被苹果拒绝这一适应症:数据库目录问题

“请确认只有用户创建的使用你的应用程序,例如,文档,新文件,编辑,内容等进行备份iCloud根据iOS数据存储指南的要求,并检查您的应用程序使用的临时文件是否只存储在/ tmp目录中;请记住删除或删除存储在此位置的文件,当它们被确定为否需要更长的时间

可以重新创建数据,但必须坚持正常运行应用程序 - 或者因为用户期望它可供脱机使用 - 应标记为“不备份”attr ibute。对于NSURL对象,请添加NSURLIsExcludedFromBackupKey属性以防止备份相应的文件。对于CFURLRef对象,请使用相应的kCRUFLIsExcludedFromBackupKey属性。“

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

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

非常感谢您的帮助。

回答

1

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

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

这就是说,有一种意见认为,由于经常损坏的数据库文件,sqlite和iCloud不能很好地混合。考虑到你的报告,这似乎是真的。

改为使用核心数据代替将是优选的。我已经完成了许多向Core Data的迁移,比如从Android应用程序迁移。在获得Core Data与其他数据库(在线,其他移动平台)的良好匹配之后,您会发现可以编写出色且简洁的代码,表现出色。

苹果会给你机会发布一条短信,解释你在重新提交时改变了什么。

祝你好运!

+0

嗨,我们没有启用iCloud,而数据库是关于应用程序信息数据的,而不是用户相关的。我认为苹果公司对这个问题不公平。 – roof 2015-01-31 21:41:48

+0

也许你无意中启用了iCloud?无论如何,这就是苹果的信息所说的。在这种情况下,只需禁用iCloud即可。如果您感到困惑,请通过回复表单联系苹果,他们通常会很快回复并且非常友好。 – Mundi 2015-01-31 21:44:01