Ios 更新时应用删除规则的核心数据

Ios 更新时应用删除规则的核心数据,ios,objective-c,database,core-data,cascade,Ios,Objective C,Database,Core Data,Cascade,这里是核心数据的初学者,核心数据中有一些非常基本的东西我不理解。我知道删除规则,因此如果我的对象被删除,例如,如果它具有级联关系,这些关系也将被删除。但是更新会发生什么呢 例如: 一个人和一辆车有关系。删除规则是级联的。 人-->汽车 若这个人被删除了,那个辆车也会消失。 但现在,如果这个人只是指向另一辆车,那么前一辆车不会被删除,只会挂在数据库中。 有什么解决办法吗 我认为理想情况下,您应该在设置新的汽车之前删除第一辆汽车,但这是通过服务器获取自动完成的。如果这是您在所有情况下想要的行为,您可

这里是核心数据的初学者,核心数据中有一些非常基本的东西我不理解。我知道删除规则,因此如果我的对象被删除,例如,如果它具有级联关系,这些关系也将被删除。但是更新会发生什么呢

例如: 一个人和一辆车有关系。删除规则是级联的。 人-->汽车 若这个人被删除了,那个辆车也会消失。 但现在,如果这个人只是指向另一辆车,那么前一辆车不会被删除,只会挂在数据库中。 有什么解决办法吗


我认为理想情况下,您应该在设置新的汽车之前删除第一辆汽车,但这是通过服务器获取自动完成的。

如果这是您在所有情况下想要的行为,您可以覆盖托管对象子类方法来设置新关系。在方法中,首先检查是否存在另一个对象,如果需要,将其删除

例如


在类似情况下,我所做的是在更新后获取废弃对象,并删除每个对象。级联删除是为了在应用时使您的工作更轻松,但正如您所发现的,它们只在删除时触发。
-(void) setCar:(Car *)car {
   if (Car* oldCar = self.car) {
        [self.managedObjectContext deleteObject:oldCar];
   }
   [self willChangeValueForKey:@"car"];
   [self setPrimitiveValue:car forKey:@"car"];
   [self didChangeValueForKey:@"car"];
}