Core Data 在更新时应用删除规则
Posted
技术标签:
【中文标题】Core Data 在更新时应用删除规则【英文标题】:Core Data applying delete rule when updating 【发布时间】:2016-03-06 05:26:11 【问题描述】:这里是 Core Data 的初学者,Core Data 中有一些非常基本的东西我不明白。我知道删除规则,例如,如果我的对象被删除,如果它具有级联关系,例如,这些关系也会被删除。但是更新会发生什么?
示例: 人与汽车有关系。删除规则是级联的。 人 --> 汽车 如果 Person 被删除,Car 也会消失。 但是现在如果 Person 只是指向另一辆 Car 怎么办,之前的 Car 不会被删除,只会在 DB 中晃来晃去。 有什么解决办法吗?
我认为理想情况下,您应该在设置新汽车之前删除第一辆汽车,但这是从服务器获取自动完成的。
【问题讨论】:
我在类似情况下所做的就是在更新后获取废弃的对象,并删除一个。级联删除是为了让您的工作更轻松,当它们应用时,但正如您发现的那样,它们仅在删除时触发。 【参考方案1】:如果这是您在所有情况下都想要的行为,您可以覆盖托管对象子类方法来设置新关系。在该方法中,首先检查是否存在另一个对象,如果需要,将其删除。
例如
-(void) setCar:(Car *)car
if (Car* oldCar = self.car)
[self.managedObjectContext deleteObject:oldCar];
[self willChangeValueForKey:@"car"];
[self setPrimitiveValue:car forKey:@"car"];
[self didChangeValueForKey:@"car"];
【讨论】:
以上是关于Core Data 在更新时应用删除规则的主要内容,如果未能解决你的问题,请参考以下文章
在应用程序运行时替换 Core Data sqlite 文件,数据不更新