我有一个NSManagedObject
已被删除,并且包含该托管对象的上下文已被保存。我明白那个isDeleted
回报YES
if Core Data 将要求持久存储在下一次保存操作期间删除该对象。然而,由于保存已经发生,isDeleted
回报NO
.
有什么好的方法可以判断是否NSManagedObject
已被删除after其包含的上下文已保存?
(如果您想知道为什么引用已删除托管对象的对象尚未意识到删除,这是因为删除和上下文保存是由后台线程启动的,该后台线程执行删除并使用performSelectorOnMainThread:withObject:waitUntilDone:
.)
检查托管对象的上下文似乎有效:
if (managedObject.managedObjectContext == nil) {
// Assume that the managed object has been deleted.
}
来自Apple的文档managedObjectContext
...
如果以下情况,此方法可能返回 nil
接收者已从其中删除
语境。
如果接收器出现故障,请致电
此方法不会导致其着火。
这两件事似乎都是好事。
UPDATE:如果您尝试测试是否专门使用检索的托管对象objectWithID:
已删除,请查看戴夫·加拉格尔的回答 https://stackoverflow.com/questions/4340445/how-can-i-tell-whether-an-nsmanagedobject-has-been-deleted/7896369#7896369。他指出,如果你打电话objectWithID:
使用已删除对象的ID,返回的对象将是一个错误not有它的managedObjectContext
设置为零。因此,您不能简单地检查其managedObjectContext
来测试是否已被删除。使用existingObjectWithID:error:
如果可以的话。如果不是,例如,您的目标是 Mac OS 10.5 或 iOS 2.0,则需要执行其他操作来测试删除。看他的回答 https://stackoverflow.com/questions/4340445/how-can-i-tell-whether-an-nsmanagedobject-has-been-deleted/7896369#7896369了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)