0

私のアプリでは、人々が維持できる最大 50 個の画像の配列を持ちます。新しいイメージを作成するか、既存のイメージを削除するかを選択できます。各画像には、評価など、いくつかのものが関連付けられています。

私の質問は、それらをどのように保管するべきかということです。「Image」という CoreData エンティティを作成し、そのように保存する必要がありますか? NSCoding に準拠する UIView サブクラスを設定し、配列をエンコードおよびデコードしてデバイスに保存する必要がありますか? 私が考慮すべき別の方法はありますか?提案をありがとう。

4

3 に答える 3

0

最近、同様の決定を下さなければならず、画像をCoreDataに保存することにしました。photoバイナリデータフィールドで呼び出される管理対象オブジェクトがありますimage

photo.image = UIImagePNGRepresentation(imageFile); // <- imageFile is a UIImage

そして、私は以下を使用して画像を再作成します:

[UIImage imageWithData:self.image];

直接的な利点の1つは、画像がオブジェクトとともに自動的に削除され、レコードを既に照会している場合に画像を取得する際に余分なオーバーヘッドが発生しないことです。

于 2013-02-26T21:32:02.933 に答える
0

イメージとその情報を表すエンティティを作成し、コア データの外部ストレージ プロパティをエンティティの属性に使用できます。このようにして、イメージを永続ストアに実際に保存することなく、コア データの利便性を得ることができます。

于 2013-02-26T21:15:52.397 に答える
0

Core Data は、やりたいことに対しておそらくやり過ぎです。画像に関する説明情報として、いくつかのキーと値のペアを選択します。1 つのキーは「パス」で、値は画像ファイルへのパス (またはその名前) です。辞書の配列 (またはセット) をシリアル化できます。

アプリの起動時に、シリアル化された辞書の配列を読み取ります。何かが変わるたびに、情報をシリアル化して保存します。ファイル上の辞書と画像の間に 1 対 1 の対応があることを確認するための短い監査ルーチンを作成し、どちらか一方が欠落している場合は他方を削除します (何かを更新する前にクラッシュした状況を処理します) )。

後で、必要に応じて辞書に属性を追加したり、一部を削除したりすることもできます。

[PS: あるバージョンの配送アプリでこれを行いました。情報をリレーショナルにする必要があるときは、Core Data に切り替えました。]

于 2013-02-26T21:35:39.077 に答える