画像も含むデータセットがあります。このデータをキャッシュしたい。それらをファイルシステムまたはコアデータに保存する必要がありますか?その理由は何ですか?
2つの主なオプションがあります。
私は個人的に最初のオプションを好みます。それは、実際の画像をいつメモリにロードするかを選択できるからです。また、生データの形式を覚えておく必要がないことも意味します。 alloc
/init
新しいUIImage
オブジェクトへのパスを使用できます。
バイナリラージオブジェクト(BLOB)の処理方法については、Core Dataプログラミングガイドの this をお読みください。実際のCoreDataストア内に格納する必要があるバイナリデータと格納しないサイズについては、経験則があります。
また、 コアデータiPad/iPhone BLOBと20k PDFのファイルシステム もご覧ください。
Core Dataストア内にバイナリデータを配置する場合は、実際のデータを保持する「Data」エンティティを用意し、「Image」エンティティを分離することをお勧めします。 2つのエンティティ間に関係を作成して、「データ」が実際に必要な場合にのみロードされるようにします。 「画像」エンティティは、タイトル、データ型などのメタデータを保持できます。
ユーザーデータ/ファイルを保存する場所に関して(ユーザーが何らかの方法でファイルを移動、削除、または変更して画像が使用できなくなることを警戒していたため、「アプリケーションサポート」は適切な場所であることがわかりました。後で回復してアプリケーションで使用する)
例としてMinecraftを取り上げます。 "〜/ Library/Application Support/minecraft/saves /"
以前のコメントに同意し、画像へのパスをコアデータに保存しますが、それ以外の場合は、画像自体をpngファイルとしてコアデータ外の独自のフォルダーに保存します。