我的应用程序最近被拒绝了,因为它在一个目录中安装了一个数据库,该目录将备份到iCloud。由于数据库附带了大量预先填充的数据,并且应用程序将用户生成的数据存储到同一文件中。 因此,将用户生成的内容与预先填充的数据混合起来并不是Apple希望我们做的。 到目前为止一切都很好。
将我的数据库分成两部分,并使用NSURLIsExcludedFromBackupKey = YES将预先填充的数据标记为存储文件。
但是如果用户想要修改该商店中的数据会发生什么,因为他发现了失败并希望修改它。 或者我自己进行在线更新,修改该商店的值。 我该如何处理。
我是否必须删除商店文件,创建一个新文件(现在使用NSURLIsExcludedFromBackupKey = NO)或者从一开始就将数据库存储在/ tmp或/ Library / caches下并将其移入/ Application Support(支持)自动启动)但由于某些原因系统正在删除我的数据库的威胁/库/缓存是什么情况?
答案 0 :(得分:2)
如果您的应用程序属于可以实际更改应用程序中预填充数据的类型,那么Apple将不允许您备份预先填充的数据,这有点令人讨厌。如果预填充的数据库很大,我可以理解他们不希望你的应用程序浪费用户的iCloud空间和AppStore中已有的信息。
伍迪对这种方法有一个很好的想法,但我不确定如果你将预先填充的数据复制到app上用户备份的数据库中,那么你实际上会浪费太多的空间启动。
这样的事情:
每当您需要更新应用时,您都会将DB A替换为新内容,就是这样。这可能会导致与用户更改的数据发生冲突。您必须确定用户数据是否比更新的数据更重要,以及如何处理这些冲突(例如,通过尝试保留它们)。
如果您需要在更新中更改DB B的结构,例如,如果您需要添加列,则必须在应用中包含一个更新例程,用于检测用户是否具有旧版本的DB编写代码以在更新后首次启动时将用户数据迁移到新数据库。
答案 1 :(得分:0)
启动时,如果用户数据库未填充,您可以从预先填充的数据库中复制数据,并且可以为用户提供重置默认值的选项,以便再次执行相同操作?