Skip navigation.
 
mlKVO: I get called on change, but then can't get the object
FROM : Rick Mann
DATE : Sat May 31 09:21:09 2008

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.

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."



From reading the docs:

"NSObjectController and its subclasses implement the selection method. 
This method returns a proxy object that represents the receiver’s 
current selection. The proxy is fully key-value-coding compliant.
When you request a key’s value from the selection proxy it returns the 
value, or a selection marker. Placeholder markers provide additional 
information about the selection. There are three placeholder markers 
defined in the NSPlaceholders informal protocol:"

It seems that I should be able to get the number from the selection, 
but instead I get the exception:

"[<NSTreeController 0x170c60> valueForUndefinedKey:]: this class is 
not key value coding-compliant for the key selection.number."



I feel like I should be able to get the number. Elsewhere I read that 
I would get an array of numbers. What am I doing wrong?



TIA,




--
Rick