For one of my attributes I can't seem to get keyPathsForValuesAffecting<Key> to 
do its thing. The following is my code. I'm observing both keys to try and find 
out what's going on. keyPathsForValuesAffectingCanLink does get called. 
observeValueForKeyPath gets called for key noteController.linkableSelection, 
but it never gets called for "canLink".

Shouldn't the existance of keyPathsForValuesAffectingCanLink mean that every 
time the observer gets triggered for noteController.linkableSelection that it 
also gets triggered for canLink? Is there any circumstances it wouldn't? 
Tearing my hair out!



+ (NSSet *)keyPathsForValuesAffectingCanLink {
return [NSSet setWithObject:@"noteController.linkableSelection"];
}

- (void)awakeFromNib {
[self addObserver:self
   forKeyPath:@"noteController.linkableSelection"
   options:NSKeyValueObservingOptionNew
   context:NULL];
[self addObserver:self
   forKeyPath:@"canLink"
   options:NSKeyValueObservingOptionNew
   context:NULL];
}

- (void)observeValueForKeyPath:(NSString *)keyPath
  ofObject:(id)object
  change:(NSDictionary *)change
  context:(void *)context {
 NSLog(@"oVFKP: %@", keyPath);
}

Now, I can fake it by replacing the above function with this, and this works:

- (void)observeValueForKeyPath:(NSString *)keyPath
  ofObject:(id)object
  change:(NSDictionary *)change
  context:(void *)context {
  if ([keyPath isEqualToString:@"noteController.linkableSelection"]) {
     [self willChangeValueForKey:@"canLink"];
     [self didChangeValueForKey:@"canLink"];
  }
 NSLog(@"oVFKP: %@", keyPath);
}

But this is obviously not ideal since I'm doing the job that 
keyPathsForValuesAffectingCanLink is supposed to be doing.










      
_______________________________________________

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