- (void)displayValidationError:(NSError *)anError
{
   if (anError && [[anError domain] isEqualToString:@"NSCocoaErrorDomain"]) {

      NSArray *errors = nil;

      if ([anError code] == NSValidationMultipleErrorsError) {
         errors = [[anError userInfo] objectForKey:NSDetailedErrorsKey];
      } else {
         errors = [NSArray arrayWithObject:anError];
      }

      if (errors && [errors count] > 0) {
         NSString *messages = @"Powd:\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 = @"Oglny bd weryfikacji.";
                  break;
               case NSValidationMissingMandatoryPropertyError:
                  msg = [NSString stringWithFormat:@"Atrybut '%@' nie moe by pusty.", 
                     attributeName];
                  break;
               case NSValidationRelationshipLacksMinimumCountError: 
                  msg = [NSString stringWithFormat:
                     @"Zwizek '%@' nie ma wystarczajcych danych.", attributeName];
                  break;
               case NSValidationRelationshipExceedsMaximumCountError:
                  msg = [NSString stringWithFormat:
                      @"Zwizek '%@' ma zbyt wiele danych.", attributeName];
                  break;
               case NSValidationRelationshipDeniedDeleteError:
                  msg = [NSString stringWithFormat:
                     @"Aby usun zwizek, '%@' musi by pusty.", attributeName];
                  break;
               case NSValidationNumberTooLargeError:
                  msg = [NSString stringWithFormat:
                     @"Liczba atrybutw '%@' jest zbyt dua.", attributeName];
                  break;
               case NSValidationNumberTooSmallError:
                  msg = [NSString stringWithFormat:
                     @"Liczba atrybutw '%@' jest zbyt maa.", attributeName];
                  break;
               case NSValidationDateTooLateError:
                  msg = [NSString stringWithFormat:
                     @"Data atrybutu '%@' jest zbyt pna.", attributeName];
                  break;
               case NSValidationDateTooSoonError:
                  msg = [NSString stringWithFormat:
                     @"Data atrybutu '%@' jest zbyt wczesna.", attributeName];
                  break;
               case NSValidationInvalidDateError:
                  msg = [NSString stringWithFormat:
                     @"Data atrybutu '%@' jest nieprawidowa.", attributeName];
                  break;
               case NSValidationStringTooLongError:
                  msg = [NSString stringWithFormat:
                     @"Tekst atrybutu '%@' jest zbyt dugi.", attributeName];
                  break;
               case NSValidationStringTooShortError:
                  msg = [NSString stringWithFormat:
                     @"Tekst atrybutu '%@' jest zbyt krtki.", attributeName];
                  break;
               case NSValidationStringPatternMatchingError:
                  msg = [NSString stringWithFormat:
                     @"Tekst atrybutu '%@' nie odpowiada wymaganemu wzorcowi.",
                        attributeName];
                  break;
               default:
                  msg = [NSString stringWithFormat:
                     @"Nieznany bd (kod %i).", [error code]];
                  break;
            }
            messages = [messages stringByAppendingFormat:@"%@%@%@\n", 
               (entityName?:@""), (entityName?@": ":@""), msg];
         }

         UIAlertView *alert = [[UIAlertView alloc] 
                            initWithTitle:@"Bd weryfikacji" 
                                  message:messages
                                 delegate:nil 
                        cancelButtonTitle:nil 
                        otherButtonTitles:@"OK", nil];
         [alert show];
         [alert release];
      }
   }
}
