Re: Duplicate rows appearing in outlineview after creating new Entity in moc, why?
Re: Duplicate rows appearing in outlineview after creating new Entity in moc, why?
- Subject: Re: Duplicate rows appearing in outlineview after creating new Entity in moc, why?
- From: "Sean McBride" <email@hidden>
- Date: Wed, 16 Jul 2008 19:34:19 -0400
- Organization: Rogue Research
Jon,
Thanks for your reply. My fetch predicate was already "parent == nil".
I have narrowed this down to the fact that my treecontroller has its
'contentSet' binding set. If I remove that binding, duplicates no
longer appear.
I have created a very simple test app to illustrate:
<http://www.rogue-research.com/vtk/TreeTest.zip>
It's a master-detail interface. The master is a tableview/
arraycontroller on the left, the detail is an outlineview/treecontroller
on the right. The treecontroller's 'contentSet' binding is bound to
'arrayController.selection.someRelationship'.
If someone would care to try:
- launch the app
- click 'Add Family'
- click 'New Folder'
- expand the folder's disclosure triangle
- (keep the folder selected)
- click 'New Person'
The new person appears both in the folder and at the root of the
outlineview. Remove the contentSet binding and the problem goes away.
It's only 50 lines of code. I don't get it.
Cheers,
Sean
On 7/16/08 1:44 PM, Jonathan Dann said:
>The duplicate problem is likely fixed by giving the tee controller a
>fetch predicate in IB. Set the predicate to something like
>parent==nil. This will obviously depend on what you've called your
>'parent' property.
>
>I've blogged about doing this with drag and drop in core data and non-
>core data apps.
>
>http://espresso-served-here.com
>
>HTH
>
>Jon
>
>On 15 Jul 2008, at 22:59, "Sean McBride" <email@hidden>
>wrote:
>
>> Hi all,
>>
>> I have an outlineview populated by binding to a treecontroller. It
>> displays CoreData entities of type "Person". "Person" has 'parent'
>> and
>> 'children' relationships. Displaying everything works fine.
>>
>> Now the outlineview must support drops. In my windowcontroller, I
>> implement outlineView:acceptDrop:item:childIndex: and look for my
>> custom
>> pasteboard type. If it's there, I need to create a new "Person"
>> entity. How should I do this?
>>
>> I have tried:
>> a) [myTreeController add:nil];
>>
>> b) Person* person = [myTreeController newObject];
>> [person setParent:...];
>>
>> c) Person* person = [NSEntityDescription
>> insertNewObjectForEntityForName:@"Person"
>> inManagedObjectContext:moc];
>> [person setParent:...];
>>
>> In all cases, the outlineview shows 2 of the new person. The
>> problem is
>> not on the model side, since if I close and reopen the window, only 1
>> new person is there.
>>
>> Thanks,
>>
>> --
>> ____________________________________________________________
>> Sean McBride, B. Eng email@hidden
>> Rogue Research www.rogue-research.com
>> Mac Software Developer Montréal, Québec, Canada
>>
>>
>> _______________________________________________
>>
>> Cocoa-dev mailing list (email@hidden)
>>
>> 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:
>>
>> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden