On Sep 26, 2008, at 3:17 AM, Brad Wilson wrote:
Here's an example of a key binding for an item that is an NSCollectionViewItem (thus representedObject)
image.bind "value", toObject:item, withKeyPath:"representedObject.user.profile_image", options:nil
So I am binding the value of the image to the item object's keypath: representedObject.user.profile_image
It looks like its complaining that the array of objects that you are placing in ArrayController is causing and exception that it is not KVC compliant?
I guess that's the crux of my question - how do I make an object KVC compliant? Like I said, I tried attr_accessor employes, etc but didn't seem to have any luck.
Thanks for the help. I'll try to get the code in a state to demonstrate my problem and send it up.
Laurent - I'd be happy to send through any exercises. I'll send through a collection once I get some more done.
Brad <snip>
Brad, Try this: def initialize @employees = [] end # for reading def countOfEmployees @employees.length end def objectInEmployeesAtIndex(i) @employees[i] end # for writing def insertObject(object, inEmployeesAtIndex:i) @employees[i,0] = object end def removeObjectFromEmployeesAtIndex(i) @employees.delete_at(i) end # you can also implement: def replaceObjectInEmployeesAtIndex(i, withObject:object) @employees[i, 1] = object end There is an additional reader method but you are supposed to pass in a buffer and I don't think we can do that: getEmployees(buffer, range:range) I found this in the Indexed Accessor Patters for To-Map Properties section of the KVC programming guide: http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Con... /apple_ref/doc/uid/20002174-BAJEAIEE Hope that helps! Laurent: I wonder if we could generically add methods to ruby's Array to make it KVC compliant? countOfObjects objectInObjectsAtIndex(i) insertObject(object, inObjectsAtIndex:i) removeObjectFromObjectsAtIndex(i) (and the two optional performance enhancing methods...replaceObjectInObjectsAtIndex(i withObject:object) and getObjects(objectsBuffer?, range:NSRange_instance)) Then we could have an Array generically be KVC compliant using the path: "objects" Just a thought! Best, Rich