0

次のような Core Data モデルがあります。

ここに画像の説明を入力

WebgalleryまたはArticleオブジェクトが保存されると、1 つまたは複数の画像が使用される場合があります同じ被写体を使用できますが、サイズが異なる場合があります。WebGalleryArticleで使用されない写真は保存しません。

Pictureのリレーションシップインスタンスソーシャルはカスケードに設定されているため、Pictureオブジェクトが削除されると、対応するPictureInstanceオブジェクトとSocialオブジェクトも削除されます。

1) WebGalleryでも記事でも、写真が使用されなくなったときに削除できるようにする方法はありますか?

2) 関係のpreviewPictureteaserPictureに逆がないのは問題ですか?

4

1 に答える 1

1

関係の逆が必要です。逆の場合、質問は自明になります。単純なカスケード ルールがそれらを WebGallery および Article から削除する場合。(または、無効にしたいだけかもしれません)。

通常、双方向の関係をモデル化し、逆の関係を適切に指定する必要があります。Core Data はこの情報を使用して、変更が行われた場合にオブジェクト グラフの一貫性を確保します (「関係とオブジェクト グラフの整合性の操作」を参照)。双方向の関係をモデル化しない理由と、モデル化しない場合に発生する可能性のある問題については、「一方向の関係」を参照してください。</p>

(コア データ プログラミング ガイド)

ギャラリーまたは記事から写真を削除するたびに、写真が使用されているかどうかを簡単に確認できます。

[gallery removePictureObject:pictureToRemove];
if (pictureToRemove.galleries.count == 0 && pictureToRemove.articles.count == 0) {
    [managedObjectContext deleteObject:pictureToRemove];
}
于 2012-09-04T20:32:54.050 に答える