我有一个基于NSInMemoryStoreType
商店的核心数据堆栈。而且我注意到删除对象并没有真正删除它们或使它们为零,而是只是将它们变成故障。
例如,(MyManagedObjectEntityClass 以及 <> 标识符是占位符):
MyManagedObjectEntityClass *o = [NSEntityDescription insertNewObjectForEntityForName:@"<MyManagedObjectEntityClass Entity Name>" inManagedObjectContext:self.localContext];
NSLog(@"\n%@", o);
[self.localContext deleteObject:o];
NSLog(@"\n%@", o);
将记录该对象仍然存在,只是它的数据是错误的。
在删除之后添加 [self.localContext save:nil];
也不会改变这一点。
我希望我可以在某个时候测试o
变量nil
,在这种情况下我会重新加载对象 - 但似乎我不能。
以防万一,是的,我知道我可以改为测试o
. -isFault
但问题是,将此测试外推到 NSSet,我不能仅仅依靠[[set anyObject] isFault]
得出该集合中的所有对象都已被删除的结论(理想情况下,该集合的计数为 0,但所有对象仍作为故障存在)。
因此,我想知道是否有可能,或者我可以采取什么替代方法来测试对象是否已被删除,并且对它们是托管对象这一事实是透明的。