自动生成的核心数据登录器返回已删除的对象



我有两个简单的核心数据模型:患者和治疗。从患者到治疗都有一对一的关系,因此患者可以进行多种治疗,但是每种治疗始终都有一个患者。

有一个称为治疗的患者的自动生成的登记属性,在患者 核心核桃中定义。H:

@property (nullable, nonatomic, retain) NSSet<Treatment *> *treatments;

我有一个病人的观点,列出了他/她的所有治疗方法。用户可以从列表中删除处理。

当我删除与患者相关的治疗(他们都是这样(时:

[managedObjectContext deleteObject:treatment];
/* I even tried this: */
NSMutableSet *treatments = [patient mutableSetValueForKey:@"treatments"];
if ([treatments containsObject:treatment]) {
  /* this actually is the case */
  [treatments removeObject:treatment];
  patient.treatments = treatments;
}
[managedObjectContext save];

patient.treatments属性仍然包含已删除的处理。我还尝试使用dispatch_async延迟表重新加载 -

删除的治疗处于断层状态;这是否意味着我需要手动从治疗方法中踢出错误的物体?我该怎么做才能强制核心数据更新治疗方法?

如果我终止应用程序并重新启动,则已删除的处理已消失。

回答我自己的问题...

尝试和错误半夜后,我发现呼叫

[moc refreshObject:patient],

作为对变更通知的响应,导致删除的治疗方法在App重新启动之前徘徊。删除处理也触发了通知,因此也许存在某种...副作用。

最新更新