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? Best wishes, Martin On 6, Jan, 2013, at 09:27 PM, Francisco Garza <dubro...@icloud.com> wrote: > Sorry, trying to respond to your message but goddamn Apple Mail... > > >> I have an app which presents folders and files in a tree structure. I'm >> using an NSTreeController and core data to keep track of the relationships >> between the files and folders. The ProjectItem entity has a 'children' >> relationship which is to-many with the same entity and a 'parent' >> relationship which is to-one with the same entity. The 'children' >> relationship has a cascade delete rule; the parent one has a nullify rule. I >> use a tree-controller and then an outline view to display. Pretty normal >> stuff so far. >> >> I received a bug report from a user saying that when he deletes a folder >> which contains one or more files then he can't save the document (this is an >> NSPersistentDocument app, by the way). The error in the logs is >> >> CoreData could not fulfil a fault for <.... Folder/ ...> > > > I've run into this bug before with NSArrayController -- basically the item is > selected, you delete it, then the NSTreeControllers/NSArrayController > maintains the selection and tries to access the object afterwards for some > reason, but the object is deleted and on 10.6 that throws an exception. > > Obviously they fixed it in 10.7, but I found the workaround was to set the > array/tree controller's selection to empty BEFORE deleting the object. This > ensures that it won't get accessed. You can also manually remove the item (by > calling removeObject:) then call deleteObject:, which fixes the bug as well. > > –F.G. > > > > _______________________________________________ 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