7/31/08 1:00 AM, also sprach [EMAIL PROTECTED]:

> When an NSTableView is set up with bindings and NSArrayController,
> what is the right way to modify a row?  I see NSArrayController
> methods to add and remove objects, but nothing to modify one.  I guess
> I could remove and then add, but that seems ugly.

NSArrayController does not have any concept of "row", or even any idea
whatsoever what kind of objects its content array contains. They don't even
have to be the objects of the same class. That's concept #1. An object's
properties are modified using Key-Value Coding. That's concept #2.
 
> Before I started with bindings, it wasn't a problem.  The model array
> for the table was an NSMutableArrray of NSMutableDictionary, so I
> could just find the dictionary for the row and update it.  But
> apparently [[ arrayController arrangedObjects] objectAtIndex: i ]
> returns an immutable dictionary, so I can't do it that way.  I can't
> see how to work with the model array directly any more, because any
> way I get indexes of selected items gives indexes into the arranged
> objects, not the original array.

If [[ arrayController arrangedObjects] objectAtIndex: i ] I returning an
immutable object, it's because that is what you are putting into
arrayController 's content array. Use mutable dictionaries instead.

Also, any programmatic changes to models should be done directly to the
model, and not through the controller's content, unless you are using the
controllers specific methods for manipulating content (such as -addObject:).

Lastly, there is no reliable way to map an array controller's
arrangedObjects to the model array, without making dangerous assumptions.
Why would you need this anyway? -selectedObjects will give you all the
objects you care about. (rhetorical question for most--there may be
situations, but IMHO this approach reveals a design flaw 99.99% of the time)

HTH,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"


_______________________________________________

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