访问可以更新的固定应用资源的正确方法是什么?

时间:2012-05-27 04:55:11

标签: iphone ios ios5 appstore-approval

我们有一个使用核心数据的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. 在temp文件夹中维护文件(我们的案例是数据库)。但他们提到删除我们在app退出时放在临时文件夹上的内容。这不是解决方案。

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

    或者任何人对此问题有任何其他解决方案?感谢你的帮助。

3 个答案:

答案 0 :(得分:1)

我实际上看到了两个问题的解决方案。

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

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

答案 1 :(得分:0)

为什么不尝试从Documents文件夹中读取数据库?如果它在那里,很棒,你就是在做生意。如果它不存在那么你必须没有下载比应用程序附带的版本更新的版本,所以改为在应用程序包中打开数据库。

答案 2 :(得分:0)

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

- &GT; iCloud和iTunes不备份以下目录的内容:

/AppName.app

/库/缓存

的/ tmp

- &GT;保证在更新过程中保留以下目录中的文件:

/文件

/库

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