The following is what I ended up with and it seems to work. Please feel free to pimp my code though... not only do I still have a LOT to learn but I also really struggle with knowing when to release and retain.
I plan to change it to use a context but figuring out the best practice for that can wait for another day!!! For what it's worth this also answers the "KVO / Core data question" thread that Paul Gribble started in December 2005 but that wasn't resolved [on list?]. // Account.m - (NSDecimalNumber *)calcBalance { return [self valueForKeyPath:@"transactio...@sum.amount"]; } + (NSSet *)keyPathsForValuesAffectingCalcBalance { return [NSSet setWithObjects:@"transactions", nil]; //should I be returning the super's set as well? } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ( [keyPath isEqual:@"amount"] ) { [self willChangeValueForKey:@"calcBalance"]; NSLog(@"pretending to change calcBalance so observers will know to get it again"); [self didChangeValueForKey:@"calcBalance"]; } else { NSLog(@"Different path"); [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; } } // Transaction.m - (Account *)account { return account; } - (void)setAccount:(Account *)newAccount { if ( newAccount == account ) return; [self willChangeValueForKey:@"account"]; if ( account != NULL ) [self removeObserver:account forKeyPath:@"amount"]; [account release]; account = [newAccount retain]; if ( account != NULL ) // not really necessary as we can send messages to NULL [self addObserver:account forKeyPath:@"amount" options:0 context:nil]; [self didChangeValueForKey:@"account"]; } - (void)awakeFromFetch { [self addObserver:account forKeyPath:@"amount" options:0 context:nil]; } _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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 arch...@mail-archive.com