如果我删除一个cd实体而不是保存mod
[self.moc deleteObject:(NSManagedObject *)someCDEntity];
[self saveMoc];
指向此cd实体的指针将成为错误
通过尝试访问故障或请求isDeleted,我得到了
'CoreData could not fulfill a fault for
问题是,一旦我保存mod,isDeleted就不再起作用了
那么如何检测实体是否被删除?因为只是要求isFault,并不表示它已被删除...而且我不能使用isDeleted
答案 0 :(得分:4)
我在这个面向OSX的线程中找到了帮助
How can I tell whether an `NSManagedObject` has been deleted?
- (BOOL) entityWasDeleted:(SomeEntity *)someEntity {
return ((someEntity == nil) || ([self.moc existingObjectWithID:someEntity.objectID error:NULL] == nil));
}
注意:不要使用下面的代码,因为它可能并不总是有效
if (managedObject.managedObjectContext == nil) {
// Assume that the managed object has been deleted = might not always work
}
答案 1 :(得分:1)
我在NSManagedObject中使用prepareForDeletion方法。它在删除之前被调用,但是对象仍然有效(并且没有出现故障)。奇迹般有效!