【问题标题】:CoreData detecting deleted entity after save [duplicate]保存后CoreData检测已删除的实体[重复]
【发布时间】:2012-03-26 21:35:16
【问题描述】:

如果我删除一个 cd 实体然后保存 mod

[self.moc deleteObject:(NSManagedObject *)someCDEntity];

[self saveMoc];

指向这个 cd 实体的指针会变成错误

通过尝试访问故障或请求 isDeleted,我得到一个

'CoreData could not fulfill a fault for

问题是,一旦我保存了 mod,isDeleted 就不再起作用了

那么我如何检测实体是否被删除?因为只要求isFault,并不表示它已被删除......而且我不能使用isDeleted

【问题讨论】:

  • 如果在MOC保存后删除了某些特定对象,您需要知道什么?
  • 是的,这正是我想知道的

标签: ios cocoa core-data


【解决方案1】:

我在这个面向 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
}

【讨论】:

  • 感谢提防,因为我正要以这种方式实现它。第一个sn-p更可靠是有道理的。
【解决方案2】:

我在 NSManagedObject 中使用 prepareForDeletion 方法。它在删除之前被调用,但对象仍然有效(并且没有错误)。奇迹般有效!

【讨论】:

  • 是的,但我想在 moc 保存后测试
猜你喜欢
  • 2012-11-20
  • 2018-08-21
  • 2021-12-22
  • 2022-08-08
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 2010-10-04
  • 2014-08-23
相关资源
最近更新 更多