我有一个类似于此的核心数据模型:
当保存 Webgallery 或 Article 对象时,它可能会使用一张或多张图片。他们可以使用相同的摄影主题,但可能使用不同的尺寸。我不保存未在 WebGallery 或文章中使用的图片。
图片的关系实例和社交设置为级联,因此当图片对象被删除时,相应的 PictureInstance 和 Social 对象也会被删除。
1)有没有办法知道图片何时不再被使用,既不是 WebGallery 也不是文章所以它可以被删除?
2)关系 previewPicture 和 teaserPicture 是否存在逆转问题?
答案 0 :(得分:1)
你应该对这种关系有一个逆。相反,问题变得微不足道。当简单的级联规则将从WebGallery和Article中删除它们时。 (或者你可能只是想取消)。
您通常应该在两个方向上建模关系,并适当地指定反向关系。如果进行了更改,Core Data会使用此信息来确保对象图的一致性(请参阅“操作关系和对象图完整性”)。有关您可能不希望在两个方向上建立关系模型的一些原因的讨论,以及可能出现的一些问题,请参阅“单向关系”。
(核心数据编程指南)
只要您从图库或文章中删除图片,就可以查看是否使用了图片:
[gallery removePictureObject:pictureToRemove];
if (pictureToRemove.galleries.count == 0 && pictureToRemove.articles.count == 0) {
[managedObjectContext deleteObject:pictureToRemove];
}