在Core Data中清除上下文:重置与删除注册对象?

问题描述 投票:7回答:1

我一直在找关于这个问题的帖子,但我不完全明白...... 这两者之间的区别是什么?

[context reset];

和..:

for (NSManagedObjectID *objId in objectIds) {
  [context deleteObject:[context objectWithID:objId]];
}

还是两者是等同的?

谢谢你

ios core-data reset nsmanagedobjectcontext
1个回答
29
投票

使用 "NSManagedObjectID*objId in objectIds"{[context ... reset 将托管对象上下文放回第一次创建时的状态--在你执行任何提取、创建任何新对象等之前。如果你在内存中有任何从这个上下文中获取的托管对象,它们现在就不能使用了。如果你在内存中的管理对象是从这个上下文中获取的,那么它们现在就不能使用了。reset 不影响持久化存储文件. 之后所有的实例仍然存在,只是不在内存中。它们可以被再次获取。

使用 deleteObject 从持久化存储中删除该对象。它不再存在了。因为它不存在,所以不能再被获取。

© www.soinside.com 2019 - 2024. All rights reserved.