I'm not great with bindings, but I'm trying to learn. 

I have an array property in my model which is a list of serial devices, I want 
to display it in a table view and let the user select one. So I instantiated a 
tableView, an NSArrayController, bound the contents of the NSArraycontroller to 
the serialDevices property and added a few other bindings to the Table View and 
Table View Column; OK now I have a list of devices on the screen. 

In the model I had a selectedSerialDevice property, which was the selected 
object out of the serial device array, I wanted to bind that to the selection 
on the table view. I could find only a Selection Indexes binding on a Table 
View so I changed the model to have an NSIndexSet with one index representing 
the selected serial device, which I bound through the NSArrayController and 
then to the table view. So already my model isn't actually what I wanted, I 
wanted a selected object, but the NSArrayController and table View want an 
index set so now my model has an index set in it to make the other objects 
happy. The view/viewcontroller is driving the model .. hmm. 

At this point I realized the NSArrayController was doing nothing. It was 
forwarding my array of objects and my selected index set I didn't want to the 
Table View. I took it out and bound direct to the equivalent properties on the 
model, everything continued to work. My array shows, I select an object and the 
index set I didn't want is updated in the model. 

So that led to two questions

1) What is the point of the NSArrayController? It mirrors the bindings on the 
Table View so it really seems to do nothing. If it were smart and converted a 
model property like .. selected object into the index set the table view wants, 
that would be useful, that would be what I'd usually use a Controller for, to 
turn model-speak into view-speak, but it doesn't, it just passes through. 

2) Do I really have to change my model to present an index set for 'selection' 
because there is no standard controller object which can turn objects/selected 
object into something a table view can use? 

I thought bindings were supposed to remove the need to write glue code to match 
a model to a view, they do .. if the model matches the view .. in which case 
the NS*Controller objects don't actually do much. 

What did I miss?  
_______________________________________________

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

Reply via email to