我的数据库有 3 个实体:照片、地点(拍摄照片的地方)和标签(照片)。
每张照片都与拍摄地点有关。 每个地方都有一组照片。
每张照片都有一组标签,每个标签都有一组照片。这是多对多的关系,因为一张照片可以有多个标签,一个标签可以关联多张照片。
现在,我想不出针对这种行为的正确删除规则:
- 我只想直接删除照片实体。
- 如果相关地点有其他拍摄的照片,则不应删除。如果照片是该地点的最后一张照片,则应将其删除。
- 如果相关标 checkout 现在其他照片中,则在没有其他照片关联之前不应删除它们。
- 此外,在标签实体中,我有一个属性可以跟踪与其关联的照片数量(我会在添加新照片时以及在照片的 prepareForDeletion 中更新此属性)。
有什么建议吗?
最佳答案
首先,标签不需要单独的属性来跟踪照片的数量。您可以查询该计数的关系。
其次,您可能希望在 Photo
实体中设置一个 -prepareForDeletion
来检查它是否是唯一引用该标签的照片,然后如果为真,则将其删除。
同样,当您删除照片时,在其 -prepareForDeletion
中,您可以检查该位置有多少张照片并调用相同的逻辑。
然后在模型本身中,我会将删除规则设置为无效。
关于objective-c - 核心数据删除规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713289/