Am 10.01.2013 um 18:06 schrieb Martin Hewitson: > And I forgot to mention: the persistent store seems to get saved since when I > restart the app (it's unusable after the CoreData error) the removed entities > are not present. Curiouser and curiouser. > > Martin > > > > On 10, Jan, 2013, at 06:05 PM, Martin Hewitson <martin.hewit...@aei.mpg.de> > wrote: > >> >> On 9, Jan, 2013, at 04:26 PM, Mike Abdullah <cocoa...@mikeabdullah.net> >> wrote: >> >>> >>> On 8 Jan 2013, at 05:53, Martin Hewitson wrote: >>> >>>> >>>> On Jan 7, 2013, at 08:44 PM, Mike Abdullah <cocoa...@mikeabdullah.net> >>>> wrote: >>>> >>>>> >>>>> On 7 Jan 2013, at 16:35, Martin Hewitson <martin.hewit...@aei.mpg.de> >>>>> wrote: >>>>> >>>>>> Hi Francisco, >>>>>> >>>>>> Thanks for the feedback! >>>>>> >>>>>> What you suggest sounds like it might fix the problem, but I'm wondering >>>>>> how best to do this. Currently I'm just calling -remove: on the tree >>>>>> controller to delete the selected object(s). Of course, if I clear the >>>>>> selection first, then -remove: doesn't do anything. I can grab an array >>>>>> of the selected objects before clearing the selection then use >>>>>> NSManagedObjectContext's -deleteObject:. So something like this: >>>>>> >>>>>> // get a pointer to the selected items >>>>>> NSArray *items = [self selectedObjects]; >>>>>> >>>>>> // clear selection >>>>>> [self setSelectionIndexPaths:@[]]; >>>>>> >>>>>> // now delete from the MOC >>>>>> for (NSManagedObject *item in items) { >>>>>> [self.managedObjectContext deleteObject:item]; >>>>>> [self.managedObjectContext processPendingChanges]; >>>>>> } >>>>>> >>>>>> Does that look sensible to you? >>>>> >>>>> Why are you calling -processPendingChanges at each iteration of the loop? >>>>> Calling it yourself is rarely needed, and best done only with >>>>> justification. >>>>> >>>> >>>> I read in that thread that I referenced (I think) that it may be necessary >>>> to do this to avoid/handle objects being deleted twice (if a parent and >>>> child are selected, then deleted). To be honest, I'm just trying things to >>>> see what works. Since this problem only occurs on 10.6.8, I think I'm >>>> looking for a work-around. >>> >>> Hmm. In my case I go to some lengths to figure out which objects don't need >>> to be deleted, because an ancestor has already been deleted. It does seem >>> simpler your way. >>> >>> I wonder though — I don't believe there is any harm in asking Core Data to >>> delete an object that's already been marked for deletion. And indeed, you >>> code is doing that. The difference the -processPendingChanges call makes is >>> that handling the delete rule will happen during that call, so child >>> objects are already marked for deletion. >>> >> >> However, I'm still not able to get this to work on 10.6.8. Having the >> -processPendingChanges call seems to make no difference. >> >> The code I currently have in my -remove: method of the NSTreeController >> subclass is >> >> // get a pointer to the selected items >> NSArray *items = [self selectedObjects]; >> >> // clear selection >> [self.outlineView selectRowIndexes:[NSIndexSet indexSet] >> byExtendingSelection:NO]; >> [self setSelectionIndexPaths:@[]]; >> >> // now from the MOC >> for (NSManagedObject *item in items) { >> [self removeObjectAtArrangedObjectIndexPath:[self >> indexPathToObject:item]]; >> [self.managedObjectContext deleteObject:item]; >> [self.managedObjectContext processPendingChanges]; >> } >> >> (-indexPathToObject: comes from a category NSTreeController_Extensions.h >> from Jonathan Dann) >> >> Despite this, I must still have a reference to a deleted object somewhere, >> but I've no idea where.
What about the undo manager - if you are using undo? >> Could there be other reasons for getting the "CodeData could not fulfull a >> fault" error? >> >> Best wishes, >> >> Martin >> >> >> >> > > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/cocoa-dev/magnard%40web.de > > This email sent to magn...@web.de _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com