Accessorizer generates code for key validation
NSString *title;
Animal *animal;
int count;
// DECLARATION //
- (BOOL)validateTitle:(id *)ioValue error:(NSError **)outError;
- (BOOL)validateAnimal:(id *)ioValue error:(NSError **)outError;
- (BOOL)validateCount:(id *)ioValue error:(NSError **)outError;
// INVOCATION //
NSError *outError = nil;
NSString *aTitle;
aTitle = [[[NSString alloc] init] autorelease];
if ([<receiver> validateTitle:&aTitle error:&outError]) {
[<receiver> setValue:aTitle forKey:@"title"];
}
else {
// inform the user that the value is invalid
}
[aTitle release];Animal *anAnimal;
anAnimal = [[[Animal alloc] init] autorelease];
if ([<receiver> validateAnimal:&anAnimal error:&outError]) {
[<receiver> setValue:anAnimal forKey:@"animal"];
}
else {
// inform the user that the value is invalid
}
[anAnimal release];
// IMPLEMENTATION //
- (BOOL)validateTitle:(id *)ioValue error:(NSError **)outError
{
if (*ioValue == nil) {
return YES;
}
// implementation specific code
return YES;
}
- (BOOL)validateAnimal:(id *)ioValue error:(NSError **)outError
{
if (*ioValue == nil) {
return YES;
}
// implementation specific code
return YES;
}
- (BOOL)validateCount:(id *)ioValue error:(NSError **)outError
{
if (*ioValue == nil) {
// trap this in setNilValueForKey
// alternative might be to create new NSNumber with value 0 here
return YES;
}
// implementation specific code
return YES;
}
Key Validation






Features

only $15