Created
July 28, 2011 17:06
-
-
Save nathanclark/1111967 to your computer and use it in GitHub Desktop.
View+CoreData Validation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (void)displayValidationError:(NSError *)anError { | |
NSLog(@"error domain, %@",[anError domain]); | |
if (anError && [[anError domain] isEqualToString:@"NSCocoaErrorDomain"]) { | |
NSArray *errors = nil; | |
// multiple errors? | |
if ([anError code] == NSValidationMultipleErrorsError) { | |
errors = [[anError userInfo] objectForKey:NSDetailedErrorsKey]; | |
} else { | |
errors = [NSArray arrayWithObject:anError]; | |
} | |
if (errors && [errors count] > 0) { | |
NSString *messages = @"Because\n"; | |
for (NSError * error in errors) { | |
NSString *entityName = [[[[error userInfo] objectForKey:@"NSValidationErrorObject"] entity] name]; | |
NSString *attributeName = [[error userInfo] objectForKey:@"NSValidationErrorKey"]; | |
NSString *msg; | |
switch ([error code]) { | |
case NSManagedObjectValidationError: | |
msg = @"Generic validation error."; | |
break; | |
case NSValidationMissingMandatoryPropertyError: | |
msg = [NSString stringWithFormat:@"The field '%@' mustn't be empty.", attributeName]; | |
break; | |
case NSValidationRelationshipLacksMinimumCountError: | |
msg = [NSString stringWithFormat:@"The relationship '%@' doesn't have enough entries.", attributeName]; | |
break; | |
case NSValidationRelationshipExceedsMaximumCountError: | |
msg = [NSString stringWithFormat:@"The relationship '%@' has too many entries.", attributeName]; | |
break; | |
case NSValidationRelationshipDeniedDeleteError: | |
msg = [NSString stringWithFormat:@"To delete, the relationship '%@' must be empty.", attributeName]; | |
break; | |
case NSValidationNumberTooLargeError: | |
msg = [NSString stringWithFormat:@"The number of the attribute '%@' is too large.", attributeName]; | |
break; | |
case NSValidationNumberTooSmallError: | |
msg = [NSString stringWithFormat:@"The number of the attribute '%@' is too small.", attributeName]; | |
break; | |
case NSValidationDateTooLateError: | |
msg = [NSString stringWithFormat:@"The date of the attribute '%@' is too late.", attributeName]; | |
break; | |
case NSValidationDateTooSoonError: | |
msg = [NSString stringWithFormat:@"The date of the attribute '%@' is too soon.", attributeName]; | |
break; | |
case NSValidationInvalidDateError: | |
msg = [NSString stringWithFormat:@"The date of the attribute '%@' is invalid.", attributeName]; | |
break; | |
case NSValidationStringTooLongError: | |
msg = [NSString stringWithFormat:@"The text of the attribute '%@' is too long.", attributeName]; | |
break; | |
case NSValidationStringTooShortError: | |
msg = [NSString stringWithFormat:@"The text of the attribute '%@' is too short.", attributeName]; | |
break; | |
case NSValidationStringPatternMatchingError: | |
msg = [NSString stringWithFormat:@"The text of the attribute '%@' doesn't match the required pattern.", attributeName]; | |
break; | |
default: | |
msg = [NSString stringWithFormat:@"Unknown error (code %i).", [error code]]; | |
break; | |
} | |
messages = [messages stringByAppendingFormat:@"%@%@%@\n", (entityName?:@""),(entityName?@": ":@""),msg]; | |
} | |
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Validation Error" | |
message:messages | |
delegate:nil | |
cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; | |
[alert show]; | |
[alert release]; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment