iOS-如何构造数据库以符合iCloud备份规则

iOS-如何构造数据库以符合iCloud备份规则,ios,backup,icloud,Ios,Backup,Icloud,我一直无法将应用程序提交到应用程序商店。这是因为该数据库是可更新的,对于iCloud备份限制来说太大了。数据库中的大多数数据都是静态的,但有一个表记录了用户复习单词的时间表。这是一个词汇测验 据我所知,我有两三个现实的选择。第一种方法是将整个数据库放入Library/Cache目录。这应该被接受,因为它没有备份到iCloud。但是,无法保证在应用程序更新过程中会维护它,请按照以下url中的“使应用程序备份更高效”中的以下条目: 第二个选项是将数据放入NSDocuments或NSLibrary目录

我一直无法将应用程序提交到应用程序商店。这是因为该数据库是可更新的,对于iCloud备份限制来说太大了。数据库中的大多数数据都是静态的,但有一个表记录了用户复习单词的时间表。这是一个词汇测验

据我所知,我有两三个现实的选择。第一种方法是将整个数据库放入Library/Cache目录。这应该被接受,因为它没有备份到iCloud。但是,无法保证在应用程序更新过程中会维护它,请按照以下url中的“使应用程序备份更高效”中的以下条目:

第二个选项是将数据放入NSDocuments或NSLibrary目录,并用skipBackupFlag标记。但是,一个问题是,这个标志不适用于iOS 5.0和以前版本,请参见“如何防止文件备份到iCloud和iTunes?”?在

这意味着,即使我使用skipBackupFlag,我想我仍然会遇到数据库备份到云的问题

因此,第三种选择是将数据库一分为二,这几乎是一种丑陋的黑客行为。将可更新部分放入NSLibrary或NSDocuments目录,其余部分留在应用程序资源中。这将把小的、可更新的部分存储在云上,其余部分保留在appresources目录中。问题在于,这样做并没有什么好的理由会分割数据库,同时打开两个数据库可能会带来性能问题

所以,我的问题是,我对规则的解释正确吗?我是否必须选择方案3


p、 在我上一篇文章中,我注意到引用的url被编辑成链接,而没有显示url。如何做到这一点?

您是否考虑过使用中所述的外部文件引用。具体请参阅setAllowsExternalBinaryDataStorage:。将大数据推出到单独的文件中有助于减少数据库大小

您是否考虑过使用中所述的外部文件引用。具体请参阅setAllowsExternalBinaryDataStorage:。将大数据推出到单独的文件中有助于减少数据库大小

但是CoreData外部存储中的数据正在以任何方式同步到iCloud,不是吗?我确实将用户图像存储在外部存储器中,它们肯定会同步到iCloud。CoreData外部存储用于不在sqlite存储中存储大块数据,以提高sqlite性能。@KostiantynSokolinskyi这一点很好。我在建议一种实现Jack提出的Option3的方法。但是CoreData外部存储中的数据正在以任何方式同步到iCloud,不是吗?我确实将用户图像存储在外部存储器中,它们肯定会同步到iCloud。CoreData外部存储用于不在sqlite存储中存储大块数据,以提高sqlite性能。@KostiantynSokolinskyi这一点很好。我是在建议一种实现Jack提出的选项3的方法。关于第二个选项,我不认为skipBackupFlag仅在5.0.1之后才可用这一事实对验证过程来说应该是一个问题,因为您基本上会按照存储指南所说的做……很好,但是您如何看待它呢?它指出,在iOS 5.0及更早版本中,应用程序需要将数据存储在/Library/cache中,以避免备份数据。它似乎在说它将被备份,大概是备份到iCloud。有人验证过你可以将“不备份”属性设置为5.0.1吗?5.0应用程序仍将备份到iCloud,但苹果会批准该应用程序吗?在iOS 5.0及更早版本中,将文件放在/Library/Caches目录中以防止备份。关于第二个选项-我不认为skipBackupFlag仅在5.0.1之后才可用这一事实对验证过程是个问题,正如您基本上会按照存储指南所说的那样……很好,但您如何看待它呢?它指出,在iOS 5.0及更早版本中,应用程序需要将数据存储在/Library/cache中,以避免备份数据。它似乎在说它将被备份,大概是备份到iCloud。有人验证过你可以将“不备份”属性设置为5.0.1吗?5.0应用程序仍将备份到iCloud,但苹果会批准该应用程序吗?在iOS 5.0及更早版本中,将文件放在/Library/Caches目录中,以防止对其进行备份。
Files Saved During App Updates
When a user downloads an app update, iTunes installs the update in a new app directory. It then moves the user’s data files from the old installation over to the new app directory before deleting the old installation. Files in the following directories are guaranteed to be preserved during the update process:

<Application_Home>/Documents
<Application_Home>/Library
Although files in other user directories may also be moved over, you should not rely on them being present after an update.
Important The new "do not back up" attribute will only be used by iOS 5.0.1 or later. On iOS 5.0 and earlier, applications will need to store their data in <Application_Home>/Library/Caches to avoid having it backed up. Since this attribute is ignored on older systems, you will need to insure your app complies with the iOS Data Storage Guidelines on all versions of iOS that your application supports