If I may be so bold, I'd like to jump in on this question. I have a similar situation, but I want to have a table representing a to-many relationship for entity1, which the user can populate by choosing any number of entries from a entity2.

e.g. entity2 has 50 entries.

        entity1 1st entry refers to entries 1, 4, and 9 of entity 2.
        entity1 2nd entry refers to entries 4, 8 and 26 of entity 2.

So I envisage that the table in entity1 should have add and remove buttons. When you click add, a new row is added to the table. The first column in the table is a NSCombobox, which can be used to select from the entries in entity 2.

The employee/department tutorial seems to come close to doing this, but as seems to be more the norm, it assumes that all entries in the relationship are wanted, which is not the case here.

So, I set up the interface as above (table with NSCombobox, and +/- buttons). I created a special array controller just for this to-many relationship, and bound its contentset to the relevant relationship in entity1. The first column in the table is bound to the specially created array controller, arrangedObjects, but this is a dead end. I can't see how to make the combobox choose the entry. The combo box doesn't have the same binding options as a popup menu.

Any advice as to how to approach this would be great.

Ian.


On 27/03/2008, at 7:34 PM, Adam Gerson wrote:

I think that internally when you create a to-many core-data
relationship the group of objects is stored as an NSSet as opposed to
an array.


http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html

http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/CntrlContent.html#/ /apple_ref/doc/uid/TP40002147-181724

http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/AccessorConventions.html#/ /apple_ref/doc/uid/20002174-178830-BAJEDEFB


On Thu, Mar 27, 2008 at 2:10 AM, Rick Mann <[EMAIL PROTECTED]> wrote:

On Mar 26, 2008, at 11:06 PM, Adam Gerson wrote:
Each table should have its own ArrayController if the two tables
represent the data from two different entities. Since you entities are
related I am assuming one entity has a property that is a to-many
relationship to the other entity. Set the ContentSet bindings for
ArrayController2 to be the selection of ArrayController1.

ArrayController2 ContentSet
Bind to = ArrayController1
Controller Key = selection
Model Key Path = (the name of the relationship that represents entity2
in entity1)

This will cause ArrayController2 to always populate the TableView with
the objects selected by ArrayController1

Let me know if that needs to be more clear.


Excellent! That was exactly what was missing. Thank you.

Why ContentSet, and not ContentArray or one of the other ContentXXX
things?

--
Rick


_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/bianface%40gmail.com

This email sent to [EMAIL PROTECTED]

_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to