2011-11-10 15 views
3

ダウンロードした画像を保存するために/Documentディレクトリを使用しているため、私のiOSアプリが拒否されました。iOS:アプリはiOSデータストレージに準拠する必要がありますか?

ダウンロードした画像を/Library/Cachesディレクトリに移動して問題を解決します。

しかし、sqLiteデータベースには、ユーザーが手動で作成した要素も含まれています。 このファイルは、レビューアに受け入れられるように、/Library/Cachesディレクトリまたは/Documentsディレクトリにコピーする必要がありますか?敬具

、(http://developer.apple.com/icloud/documentation/data-storage/で見つけることができる)のiOSストレージガイドラインを1として

答えて

1

マキシムあなたはDocumentsディレクトリとキャッシュディレクトリ内のすべての再ダウンロード可能なコンテンツ内のすべてのユーザー生成コンテンツを置く必要があります。だから、そこにsqLiteデータベースを置くのがいいでしょう。

この背景には、iOS 5以降、ドキュメントディレクトリがiCloudにバックアップされていることがあります。多くのアプリは完全なデータをそこに保存する傾向があるため、iCloudのバックアップはかなり大きくなり、空き領域を使い果たしてネットワークトラフィックを生み出します。なぜなら、その理由を不思議に思ってユーザーを怒らせるからです。これを緩和するため、AppleはDocumentsディレクトリに保存されているものと、これが再生可能なコンテンツ(ダウンロード可能なファイルなど)であるかどうかを詳しく見ているようです。

注意:キャッシュディレクトリは、デバイスの空き容量が少なくなったときにオペレーティングシステムによって削除される可能性があります。したがって、あなたのアプリは、これまでと同じようにすべてが存在すると仮定することはできませんが、キャッシュから何かにアクセスするたびに再確認する必要があります。

+0

私はデータベースを/ Documentディレクトリに置き、必要ならば/ Library /キャッシュにイメージファイルを再ダウンロードします。どうもありがとう :-) – Tipiweb

0

手動で作成したデータは、アプリディレクトリに保存することができます。

あなたは、現在のディレクトリを取得するためのコードの下に使用することができます -

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

をして、あなたは完全なパスを取得するためにファイル名を追加します。

NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myfile.format"] ; 
関連する問題