On Nov 27, 2008, at 2:12 AM, Mike Chambers wrote:

First, I am new to Cocoa, so I apologize if this question is super simple.

No, it's something that bites a lot of people.

I am currently reading through "Cocoa Programming for Max OS X", and
am trying to create a simple example of a NSTableView that is bound to
an NSArrayController which is bound to an NSMutableArray in my
application controller class.

Just as a pedantic point of clarification: you are not binding anything to an NSMutableArray. You are binding to a _property_ of your controller object. That property is represented by the methods in your controller class's interface. It so happens that, with the way you've chosen to implement your controller class, the property is backed by an NSMutableArray.

This is an important distinction and once you grok it, KVO and bindings will make more sense.


However, when I change (i.e. add) data in the NSMutableArray the
changes are not reflected in the NSArrayController. If I modify the
NSArrayController directly, I can see the changes in the NSTableView

After a lot of searching, I found this post:

http://chanson.livejournal.com/85659.html

which basically says changes to NSMutableArray will not automatically
be picked up by the NSArrayController.

That's because KVO and bindings are hooked into your controller object and its methods. They are not hooked into the NSMutableArray at all! So, only mutations of the property done through certain specific methods of your controller object will be noticed.


However, even If I implement
the solutions in that post, it is still not working for me.

That post led you a bit astray with a simple typographical error. The methods should have "in" in their names, not "into".

See the Apple docs that that post referenced: http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/AccessorConventions.html#/ /apple_ref/doc/uid/20002174-178830-BAJEDEFB

Also see the docs for -mutableValueForKey:. Actually, better is to read the comments at the declaration for that method in NSKeyValueCoding.h, because it has some details which the docs are (still!) missing.

Besides the insertObject:in<Key>AtIndex: method, you may need to implement the corresponding "remove" method, too. Even if you don't have to, you should.

Cheers,
Ken

_______________________________________________

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