Skip navigation.
 
mlRe: KVO: I get called on change, but then can't get the object
FROM : j o a r
DATE : Sat May 31 09:32:30 2008

On May 31, 2008, at 12:21 AM, Rick Mann wrote:

> I registered to observe changes in the "number" column of my tree 
> controller:
>
>     [mItemsController addObserver: self
>         forKeyPath: @"selection.number"
>         options: (NSKeyValueObservingOptionNew)
>         context: NULL];
>
> My -observe: action gets called, but this line
>
>     NSLog(@"Value changed %@: %@ (%@)", inKeyPath, inChange, [inObject 
> selection]);
>
> dumps this to the console:
>
> Value changed selection.number: {
>    kind = 1;
>    new = <null>;
> } (<_NSControllerObjectProxy: 0x177cb0>)
>
> Note that "new" is null. I would expect it to be the value of the 
> number.



Search for "NSKeyValueObservingOptionNew" here:

   <http://homepage.mac.com/mmalc/CocoaExamples/controllers.html>


> Furthermore, this line:
>
>     NSLog(@"selection: %@", [inObject valueForKey: @"selection"]);
>
> dumps:
>
>     selection: <_NSControllerObjectProxy: 0x177cb0>
>
> But if I change it to @"selection.number", it throws the exception:
>
> "[<NSTreeController 0x1722e0> valueForUndefinedKey:]: this class is 
> not key value coding-compliant for the key selection.number."



What happens if you call "-valueForKeyPath:" instead of "-valueForKey:"?

j o a r