gpt4 book ai didi

ios - 自动生成的核心数据访问器返回已删除的对象

转载 作者:行者123 更新时间:2023-11-28 23:32:04 24 4
gpt4 key购买 nike

我有两个简单的核心数据模型:患者和治疗。 Patient 与 Treatment 之间存在一对多的关系,因此一个 Patient 可以有多个 Treatment,但每个 Treatment 总是有一个 Patient。

Patient 有一个自动生成的访问器属性,称为treatments,在 Patient+CoreDataProperties.h 中定义:

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

我有一个患者 View ,列出了他/她的所有治疗方法。用户可以从列表中滑动删除治疗。

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

[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 延迟表重新加载 - 没有帮助。

删除的处理处于错误状态;这是否意味着我需要手动从处理 NSSet 中剔除有缺陷的对象?我该怎么做才能强制 Core Data 更新治疗 NSSet?

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

最佳答案

回答我自己的问题...

经过半夜的试错,发现调用

[moc refreshObject:patient],

作为对更改通知的响应,导致删除的处理在应用程序重新启动之前一直存在。删除治疗也会触发通知,所以可能有某种……副作用。

关于ios - 自动生成的核心数据访问器返回已删除的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com