I'm trying to create a simple interface to my core data model in the style of iTunes Genre browser.
I have a model setup with three entities: Genre <-->> Artist <-->> Album
.
I'd like to simply tie them each to a NSTableView, but it appears as though accessing children relationships from a NSArrayController is not KVC compliant. So, I'm having difficulty communicating the selected Genre objects to the ArtistController.
How do you do this? Is it even possible within IB without any custom subclassing?
Edit for Posterity: I was doing several things wrong.
Entity
Mode, but rather operate as a NSMutableDictionary
class.Content Set
binding. Use the controller key selection
, and the model key path that connects to the children.phew. Both Brian's answer and this MacResearch tutorial were helpful in determining my errors (and which parts I had right).
The approach I would probably take is to have a separate NSArrayController for each table view, then have the content of one array controller be based on the selection of another.
For example, say you have table view A that displays the list of available genres, so it has an array controller A whose content is hooked up to your managed object context.
Then, say you have table view B which shows the available artists for whichever genre is selected in table A. This table would have its own array controller B, and the content array for controller B is bound so the "controller key" field in IB is set to the "selection" key of controller A, with "artists" being the model key (this assumes your Genre entity has a to-many relationship named "artists" to the Artist entity).
You can then apply the same principle to a third table view + controller to show the albums for the selected artist.
The general term for this kind of setup is a "master-detail interface", and is outlined in Apple's docs at this link
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With