核心数据反向关系和删除未使用的对象

时间:2012-09-04 18:44:30

标签: core-data cascading-deletes inverse

我有一个类似于此的核心数据模型:

enter image description here

当保存 Webgallery Article 对象时,它可能会使用一张或多张图片。他们可以使用相同的摄影主题,但可能使用不同的尺寸。我不保存未在 WebGallery 文章中使用的图片。

图片的关系实例社交设置为级联,因此当图片对象被删除时,相应的 PictureInstance Social 对象也会被删除。

1)有没有办法知道图片何时不再被使用,既不是 WebGallery 也不是文章所以它可以被删除?

2)关系 previewPicture teaserPicture 是否存在逆转问题?

1 个答案:

答案 0 :(得分:1)

你应该对这种关系有一个逆。相反,问题变得微不足道。当简单的级联规则将从WebGallery和Article中删除它们时。 (或者你可能只是想取消)。

  

您通常应该在两个方向上建模关系,并适当地指定反向关系。如果进行了更改,Core Data会使用此信息来确保对象图的一致性(请参阅“操作关系和对象图完整性”)。有关您可能不希望在两个方向上建立关系模型的一些原因的讨论,以及可能出现的一些问题,请参阅“单向关系”。

(核心数据编程指南)

只要您从图库或文章中删除图片,就可以查看是否使用了图片:

[gallery removePictureObject:pictureToRemove];
if (pictureToRemove.galleries.count == 0 && pictureToRemove.articles.count == 0) {
    [managedObjectContext deleteObject:pictureToRemove];
}