2011-12-13 13 views
1

私はWebサービスからデータをダウンロードし、それをテーブルビューで表示する簡単なアプリを持っています。オフラインアクセスを許可するために、アプリケーションはこのデータをデバイス自体のキャッシュディレクトリにキャッシュします。私は参照のためにすべてのキャッシュされたファイルのリストを保持し、同様にキャッシュディレクトリに保存します。ダウンロードのすべてが完了した後、だから私は、次のファイルを持っている:iOSアプリのアップデート中に実際に何が起こっていますか?

XMLFileList 
XML1 
XML2 
... 

は、私は数週間前にこのアプリを立ち上げ、およびいくつかのマイナーなバグを修正するために、必要に応じていくつかのマイナーなアップデートをリリースしなければならなかったので、持っています。ただし、ユーザーが端末でアプリを更新すると、ダウンロードしたリソースは表示されなくなります。私はこれを開発デバイス上で発生させることができました。アプリケーションストアを更新し、デバッグビルドをロードして、次の問題を特定しました。

ダウンロードしたファイルにデータが表示されないようです彼らはもはや存在しない。また、保存されたリストにファイルが表示されるため、ファイルを再ダウンロードしません。これはむしろ興味深い質問です。なぜキャッシュされたXMLファイルは削除されますが、マスターリストは削除されませんでしたか?

アプリのアップデート中に何が起きているのでしょうか?

答えて

2

ファイルを/ライブラリ/キャッシュ(またはそれが何であれ)に置いても、それらのファイルが次のファイルにあるという保証はありませんあなたのアプリを実行する時間。しかし、/ Documentsに入れたものはそこにあります。実際、/ Documents内のものもiCloudにバックアップされます(iOS 5.0.1で新たに利用可能なビットを設定しないと、/ Documents内のファイルをバックアップできません)。

とにかく、重要な点は、Appleのドキュメントをどこに置くべきなのかを読むべきだということです。 (私は正しい参照がうまくいきませんでしたが、以前はそれを見てきました)これは次のようなものです:ユーザが生成したものは/ Documentsに入っていなければなりません。サーバから再フェッチできるものは、ライブラリ/キャッシュであり、OSによってパージされる可能性があります。

+0

ええ、それは私が恐れていたものです。さて、私はもう一度それを保存して、アプリケーションだけがそれらのファイルにアクセスできるようにしますか? –

+0

/Documents(およびiOS 5.0.1の下にバックアップしないようにマークしてください)にするか、必要に応じてアプリを再ダウンロードすることができます。 –

0

キャッシュディレクトリの内容は保持されないことがあります。しかし、私はディレクトリ全体がすべて一度にクリアされるという文書化された保証はありません。

関連する問題