【发布时间】:2012-08-31 17:31:25
【问题描述】:
我正在从核心数据中删除一个托管对象,如下所示:
[item.managedObjectContext deleteObject:item];
(请注意,此项目已创建,但此时未保存。)
试图修复一个错误,我想确认该项目确实已被删除。首先,由于每个“项目”都属于一个“列表”,我记录了 list.items 前后的计数。没有变化。嫌疑人。
为了更加确定,我在删除前后添加了一个获取请求,并记录了上下文中的项目总数。这就是奇怪的地方。
我发现执行 fetch 的行为消除了我最初的错误。换句话说,如果我在删除前后执行一次 fetch,我可以清楚地看到上下文中的项目数减少了一个。但是,如果没有此提取,则不会删除该项目(或至少不会立即删除)。
有人对这里发生的事情有所了解吗?
【问题讨论】:
-
你在做[managedObjectContext保存]操作吗?
-
否 - 不需要,因为在添加项目时未保存上下文。这里的基本流程是用户想要添加一个项目,所以我创建它(不保存)并呈现一个模式。如果用户添加项目,我会保存上下文。如果他们取消,我只是删除对象(不保存)。这是使用委托发生的,并且以我找到的 Apple 演示为模型。
-
这是你的问题,@Abizem 是正确的。这些插入和删除的对象存在于内存中但被标记为插入或删除的对象,直到您保存删除的对象仍然存在(但标记为待删除)
-
除非它们似乎在我执行提取后立即被删除(仍然没有事先保存)?
标签: ios core-data nsmanagedobject