On Oct 21, 2011, at 10:16 AM, Chris Paveglio wrote:

> My app watches several folders (and subfolders) on our file servers, and 
> counts and displays the files in those folders.
> I have a class for the folder data that contains the count from 3 subfolders 
> (ints) and then an array of file names of the files from one of the 
> subfolders.
> There are 8 folders that are watched, and those 8 items are in an array. I 
> have a table view that has columns for the integer values from the class 
> object. Then there is a second table where I show the file names when the 
> user selects a row from the first table.
> I have both these tables set up using bindings and array controllers. The 
> first table is straight forward setup. The second one's content array is 
> bound to the first array controller. The controller key is "selection" and 
> the model key path is the name of the array in the class object.
> The second table shows up fine, and it's content changes when I change the 
> selection on my first table.
> But when the contents of the folder changes and the app recalculates the 
> data, I get an error that *** -[NSCFArray objectAtIndex:]: index (3) beyond 
> bounds (3)
> This only occurs when the first table has a selection, and I understand 
> (probably) that it's because the second table is based on the first, and that 
> the data for the 2nd table is changing in a non-KVC compliant kind of way. 
> I'm not telling the 2nd array controller to remove or reset the values in the 
> class object's array, I am just directly removing all the objects from class 
> object array, then re-adding the newly scanned file names into the array.
> My workaround is, in code, the first table is deselected, the values are all 
> updated, and then the originally selected row is reselected. This makes the 
> display function and update properly.

As you think, you need to update the "primary" array in a KVC/KVO compliant 
way. That is always the  best way to update objects that are observed/bound. 
The simplest way is to first get the mutable proxy using -[object 
mutableArrayValueForKey:]. Any changes you make to the returned array will be 
propagated appropriately.

Best,

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

_______________________________________________

Cocoa-dev mailing list ([email protected])

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