I'd like to know is it possible to use cocoa bindings to show one-to-many or many-to-many relationships on NSTableView row.
What I'm trying to do is show one entity per row and in one column I'd like to show thru relationship more than one attributes from another entity.
Currently my schema is something like this:
Person <--->> tag
One row should look like this:
Name | Birth | Address | tag
--------------------------------------------------------
jon 75/12/13 123 street handyman, contractor
paul 53/03/20 53 avenue 1 contractor, swimmer, biologist
is that even possible?
There are a couple of ways you can do this. For purposes of discussion, I'll assume a collection property
tags
for the one-to-many relationship.You can make a dependent property which is the tag list string:
(If
tags
is a set rather than an array, you'd useself.tags.allObjects
.)Since this is sort of specific to how the tag list is presented in a view, it can be considered more part of the view layer than the model layer. Therefore, you might define these methods in a category on your class, rather than the class itself.
Another approach is to do the same thing using a value transformer class. You'd bind the text field to the
tags
collection property but specify the name of a custom value transformer class. That class would transform from the collection class (array or set) and produce a string in a manner similar to the above.