私は、Webから数百の大きなPDFファイルをダウンロードし、オフラインで使用するためにそれらをiPadにキャッシュするiOSiPadアプリを作成しています。
iPadでそれらを保存するのに最適な場所はどこですか?ローカルファイルシステム、コアデータ、またはその他の場所?インデックス作成と検索のメカニズム(サムネイル画像などを使用)にコアデータを使用することを計画しており、ユーザーがドキュメント全体を具体的に要求した場合にのみPDFドキュメントにアクセスします。
私は、Webから数百の大きなPDFファイルをダウンロードし、オフラインで使用するためにそれらをiPadにキャッシュするiOSiPadアプリを作成しています。
iPadでそれらを保存するのに最適な場所はどこですか?ローカルファイルシステム、コアデータ、またはその他の場所?インデックス作成と検索のメカニズム(サムネイル画像などを使用)にコアデータを使用することを計画しており、ユーザーがドキュメント全体を具体的に要求した場合にのみPDFドキュメントにアクセスします。
これを行うのに最適な場所は、DocumentsディレクトリまたはCacheディレクトリのいずれかです。Documentsディレクトリ内のドキュメントはユーザー生成コンテンツであると想定されているため、これはあなたが探しているものではないと思います。
代わりに、次の方法でアクセスできるCacheディレクトリを使用する必要があると思います。
- (NSString *)cacheDirectory {
{
NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [pathList objectAtIndex:0];
return path;
}
デバイスに十分なスペースがない場合は、システムによってキャッシュディレクトリが空になる可能性があることに注意してください。私の経験では、これはほとんど起こりませんが、絶対にファイルが削除されないようにしたい場合は、キャッシュ以外のライブラリディレクトリのサブディレクトリにドキュメントを保存することをお勧めします。
この場合、ディレクトリとファイルの両方にフラグを設定する必要があります。そうしないと、アプリが拒否されます。do not backup
公式情報については、Appleガイドライン(開発者アカウントが必要)を参照してください。
それらを/documentsフォルダーに保存する必要があります。そのフォルダの目的はまさにそれであり、再ダウンロードできなかった(または大きすぎて再ダウンロードできない)データを保存します。一時データまたは簡単に再ダウンロードできるデータの場合、Appleは代わりに/cacheフォルダーを使用することをお勧めします。
特定の名前でファイルを保存し、その名前をCoreDataに保存するだけで、ファイルを見つけることができます。
PDFをDocumentsフォルダーに保存します。そして、コアデータのsqlite日付ベースを作成します。おそらく3つの属性(thumbNail、localURL、title)を持つコアデータエンティティを作成します。