Re: Subclassing Catch-22
Re: Subclassing Catch-22
- Subject: Re: Subclassing Catch-22
- From: Ondra Cada <email@hidden>
- Date: Tue, 26 Apr 2005 23:54:46 +0200
On 26.4.2005, at 23:45, Marco Scheurer wrote:
On Apr 26, 2005, at 23:17, Todd Ransom wrote:
The code looks like this:
- (NSString *)bindingKeyForTableColumnIdentifier: (NSString
*)identifier {
NSArray *keys = [NSArray arrayWithObjects: @"name", @"notes",
@"status", nil];
NSArray *identifiers = [NSArray arrayWithObjects: @"Name",
@"Notes", @"Status", nil];
NSDictionary *keyForIdentifier = [dictionaryWithObjects: keys
forKeys: identifiers;
return [keyForIdentifier valueForKey: identifier];
}
- (BOOL) tableViewAddColumnWithIdentifier: (NSString *)identifier {
NSString *bindingKey = [self bindingKeyForTableColumnIdentifier:
identifier];
[create a table column, bind it, add it to a table]
}
The theory was that subclasses would override both methods, returning
the appropriate key to bind to and implementing whatever specifics
were required for the table column (popup button cells, date
formatters, etc.).
It all worked fine except I wanted the subclasses to defer to super
for columns shared by all views.
Maybe bindingKeyForTableColumnIdentifier in subclasses needs to
augment the dictionary of the superclass? That would be easier with a
dictionary method you can override:
- (NSDictionary *) keyForIdentifierDictionary
{
NSMutableDictionary *keyForIdentifier = [NSMutableDictionary
dictionaryWithObjectsAndKeys...];
[keyForIdentifier addEntriesFromDictionary:[super
keyForIdentifierDictionary]];
return keyForIdentifier;
}
Or perhaps even this:
-(NSString*)bindingKeyForTableColumnIdentifier: (NSString *)identifier {
NSString *s=[super bindingKeyForTableColumnIdentifier:identifier];
if (s) return s;
... the original contents ...
}
---
Ondra Čada
OCSoftware: email@hidden http://www.ocs.cz
private email@hidden http://www.ocs.cz/oc
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden