I seem to have a very simple question, but the answer is eluding me for some odd reason, but here goes:

Suppose I have two NSArrayControllers, ac1 and ac2. Suppose now that I have a third controller ac3, whose content array is dependent on both ac1.selection and ac2.selection (or some keypath therein). Since I can't bind ac3 to both ac1 and ac2 at the same time, I have a class
which has a dependent key.  In particular, suppose I have the following:

@interface Foo {
   IBOutlet NSArrayController* ac1;
   IBOutlet NSArrayController* ac2;
}
/* ... */
@end

@implementation Foo
- (id) ac1Selection { return [[ac1 selection] valueForKey:@"bar"]; }
- (id) ac2Selection { return [[ac2 selection] valueForKey:@"baz"]; }

+ (NSSet*) keyPathsForValuesAffectingAc3ContentArray {
   return [NSSet setWithObjects:@"ac1Selection", @"ac2Selection", nil];
}

- (NSArray*) ac3ContentArray {
   /* Do stuff using -ac1Selection and -ac2Selection */
}
@end

(I hope I wired the ac3ContentArray key dependency correctly...)

The part where I'm not getting is how to represent the fact that - ac1Selection, say, is dependent on ac1.selection. Is it as simple as implementing +keyPathsForValuesAffectingAc1Selection as something like...

+ (NSSet*) keyPathsForValuesAffectingAc1Selection {
   return [NSSet setWithObjects:@"ac1.selection", nil];
}

... or do I have to do something more complicated?

On the side, suppose we also have things the other way around: if ac3 has some attribute with some keypath that could alter the selection of ac1 and ac2, what should I do? (Related to this: what if ac2 itself depends on ac1?)

_______________________________________________

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

Reply via email to