I have the following model, as you can see in the image.
My application requires refreshing every instance of B, so at each viewWillAppear
, I need to delete all the B's in the model. Upon deleting a B, the cascade delete rule on the relationship to C will delete all C and then cascade to all D.
A & E are constants.
I have the DeleteRule on each object as follows:
A: b - Cascade
B: c - Cascade, a - Nullify
C: b - Nullify, d - Cascade
D: c - Nullify, e - Nullify
E: d - Cascade
or
A -(cascade)->> B -(cascade)-> C -(cascade)->> D -(nullify)-> E
A <-(nullify)- B <-(nullify)- C <-(nullify)- D <-(nullify) E
I am having problem with cascading the delete on all B,C,D. My fetchRequest object returns every instance of B in A and then I call the -deleteObject:
on each B from the managedObjectContext. But there is the EXC_BAD_ACCESS on the call to [managedObjectContext save:&error].
Can someone show me what I am doing wrong? Am I having problems with the DeleteRule on each entity or does the problem lay elsewhere? What are the best practices to handle the cascading deletes on three objects B,C,D?
Edited:
Here is the stack trace when the error is raised:
#0 0x01d843ae in ___forwarding___
#1 0x01d606c2 in __forwarding_prep_0___
#2 0x01c618b6 in -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:]
#3 0x0003263a in _nsnote_callback
#4 0x01d4f005 in _CFXNotificationPostNotification
#5 0x0002fef0 in -[NSNotificationCenter postNotificationName:object:userInfo:]
#6 0x01bc217d in -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:]
#7 0x01c21763 in -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:]
#8 0x01ba65ea in -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:]
#9 0x01bdc728 in -[NSManagedObjectContext save:]
Here is the log in the console when I tried to set NSZombieEnabled & MallocStackLogging to YES:
2010-02-24 15:41:39.803 Foo[2591:207] deleting object: FUM5
2010-02-24 15:41:40.515 Foo[2591:207] *** -[viewController controllerWillChangeContent:]: message sent to deallocated instance 0x7e54510
Edit 2: SOURCE CODE ADDED
I have tried to recreate the situation by creating a new project with the exact schema in the image. You can download it from here. There is a README text as well. Hope that I have given enough information.