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.


_______________________________________________

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

Reply via email to