例如,假设我有以下实体:
- 人
- 房子
- 车
一个人可以有很多房子和汽车,而汽车和房子只能有一个所有者。
现在考虑以下场景:
- 我在上下文中插入了一个人,以及 3 座房屋和 3 辆汽车。在这些房屋和汽车中,一所房屋和一辆车已经有了所有者。
- 然后,在剩下的 2 栋房屋和 2 辆汽车中,我将每个添加到唯一插入的人中。
- 此时,如果我保存上下文,它将在 context.insertedObjects 中反映 3 座房屋和 3 辆汽车。但我只想保存通过我有句柄的人可以到达的对象(这个想法是,对于以前所有者的房子和汽车,那个所有者可能是一个错误,我从来没有拿过它。)
当然,我可以在保存之前手动删除这些对象,但我想知道是否可以提出一个通用的解决方案,考虑到特定对象的对象可达性。
基本上类似于(伪代码):
for (NSManagedObject *obj in context.registeredObjects) {
if (Person does not reach obj in any relationship ) {
[context deleteObject:obj];
}
}
通过通用解决方案,我的意思是不需要了解关系和特定实体的东西(以免迭代每个房屋和汽车的人的房屋和汽车关系)。