2011-12-13 35 views
1

我有一个简单的应用程序,从web服务下载一些数据并将其显示在桌面视图中。为了允许离线访问,应用程序将此数据缓存在设备本身的缓存目录中。我保存了所有缓存文件的列表以供参考,并将其保存到缓存目录中。所以,在所有的下载都是完整的,我有以下文件:iOS应用程序更新期间发生了什么?

XMLFileList 
XML1 
XML2 
... 

我几个星期前推出的这款应用程序,并因为不得不释放了一些小的更新,需要修复了一些小错误。但是,似乎当用户更新其设备上的应用程序时,他们不再看到下载的资源。我设法通过应用商店进行更新,然后加载调试版本,并确定以下问题,从而在开发设备上发生这种情况:

它看起来似乎没有在下载的文件中显示数据,因为他们不再存在。它也不会重新下载文件,因为它们显示在已保存的列表中。这提供了一个相当有趣的问题:为什么缓存的XML文件被删除,但不是主列表?

究竟是在应用程序更新期间幕后发生了什么,我可以解释或重现以确保这种情况不会继续发生?

回答

2

如果你把文件放入/ Library/Caches(或其它),那么不能保证那些文件会在那里下一个当你运行你的应用程序。然而,你放入/ Documents中的任何东西都会在那里。实际上,/ Documents中的任何内容都将备份到iCloud中(除非您设置iOS 5.0.1中的新增功能,可以让您选择/ Documents中的文件进行备份)。

无论如何,关键是你应该阅读Apple的文档,了解你应该在哪里放置哪些文件。 (我四处搜寻了正确的引用,但是我之前看到过它)。归结起来,任何用户生成的东西都应该放在/ Documents中,任何可以从服务器重新获取的东西都应该放入/库/高速缓存,可能会被操作系统清除。

+0

是的,那就是我害怕的。现在我如何再次保存它,以便只有应用程序可以访问这些文件? – 2011-12-13 21:56:24

0

缓存目录内容不保证保留。但是我没有看到任何记录的保证,即整个目录将一次全部清除。 (也许只有最大和/或最古老的内容或一些这样的?)

相关问题