2011-12-13 53 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

緩存目錄內容不保證保留。但是我沒有看到任何記錄的保證,即整個目錄將一次全部清除。 (也許只有最大和/或最古老的內容或一些這樣的?)

相關問題