2

我们有一个使用核心数据的 iOS 应用程序,我们正在使用初始数据库填充应用程序数据。(SQLite)。稍后它将从互联网下载数据并更新数据库。我们将 SQLite 数据库复制到 Documents 文件夹。Apple 表示这是不正确的,因为 Documents 文件夹中的文件会自动备份到 iCloud。他们不允许这样做,除非这些文件是用户创建的。

他们提到的解决方案。

  1. 为文件(在我们的案例数据库中)设置一个标志,它不会备份到 iCloud。但这仅适用于 iOS 5.1,我们不能这样做。我们需要支持 iOS 4 及更高版本。(https://developer.apple.com/library/ios/#qa/qa1719/_index.html

  2. 维护临时文件夹中的文件(我们的例子是它的数据库)。但是他们提到要删除我们在应用退出时放在临时文件夹中的所有内容。同样,这不是解决方案。

但我的问题是,如果我们不删除那有什么问题?当用户从 AppStore 更新到下一个应用程序版本时,临时文件夹会发生什么?它会删除内容还是会在应用程序更新时保留临时文件夹中的任何内容?

或者任何人有任何其他解决这个问题的方法?非常感谢您的帮助。

4

3 回答 3

1

我实际上看到了两种解决您问题的方法。

  1. 仅在 iOS 5.1+ 上为您的文件设置标志,如果操作系统低于 5.1,请不要这样做。

  2. 阅读有关将文件保存到磁盘的文档,临时和文档不是您可以存储信息的唯一两个地方。在所述文档文件中,它应该说明每个文件夹的内容何时被删除。

于 2012-05-27T05:06:53.573 回答
0

为什么不尝试从 Documents 文件夹中读取数据库?如果它在那里,太好了,你在做生意。如果它不存在,那么您一定没有下载比应用程序附带的版本更新的版本,因此请打开应用程序包中的数据库。

于 2012-05-27T06:12:29.767 回答
0

在阅读了一些文档后,我觉得解决方案是正确的。

--> iCloud 和 iTunes 不备份以下目录的内容:

/AppName.app

/图书馆/缓存

/tmp

--> 以下目录中的文件保证在更新过程中被保留:

/文件

/图书馆

所以我将我的初始数据库复制到库/缓存中。并在该数据库之上进行任何更新。但我觉得如果设备在低磁盘空间上运行,它可能会删除缓存文件夹的内容。在这种情况下,我检查数据库是否存在,如果它不存在,我会再次复制。(作为预防措施)。但在这种情况下,用户可能会丢失一些数据。但苹果仍然没有为此提供适当的指南。

于 2012-05-27T10:33:18.977 回答