core data - How can I tell whether an `NSManagedObject` has been deleted? -


i have nsmanagedobject has been deleted, , context containing managed object has been saved. understand isdeleted returns yes if core data ask persistent store delete object during next save operation. however, since save has happened, isdeleted returns no.

what way tell whether nsmanagedobject has been deleted after containing context has been saved?

(in case you're wondering why object referring deleted managed object isn't aware of deletion, it's because deletion , context save initiated background thread performed deletion , save using performselectoronmainthread:withobject:waituntildone:.)

checking context of managed object seems work:

if (managedobject.managedobjectcontext == nil) {     // assume managed object has been deleted. } 

from apple's documentation on managedobjectcontext ...

this method may return nil if receiver has been deleted context.

if receiver fault, calling method not cause fire.

both of seem things.

update: if you're trying test whether managed object retrieved using objectwithid: has been deleted, check out dave gallagher's answer. points out if call objectwithid: using id of deleted object, object returned fault not have managedobjectcontext set nil. consequently, can't check managedobjectcontext test whether has been deleted. use existingobjectwithid:error: if can. if not, e.g., you're targeting mac os 10.5 or ios 2.0, you'll need else test deletion. see his answer details.


Comments

Popular posts from this blog

Add email recipient to all new Trac tickets -

400 Bad Request on Apache/PHP AddHandler wrapper -

php - Change action and image src url's with jQuery -