- (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 = @"Powód:\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 = @"Ogólny błąd weryfikacji.";
                  break;
               case NSValidationMissingMandatoryPropertyError:
                  msg = [NSString stringWithFormat:@"Atrybut '%@' nie może być pusty.", 
                     attributeName];
                  break;
               case NSValidationRelationshipLacksMinimumCountError: 
                  msg = [NSString stringWithFormat:
                     @"Związek '%@' nie ma wystarczających danych.", attributeName];
                  break;
               case NSValidationRelationshipExceedsMaximumCountError:
                  msg = [NSString stringWithFormat:
                      @"Związek '%@' ma zbyt wiele danych.", attributeName];
                  break;
               case NSValidationRelationshipDeniedDeleteError:
                  msg = [NSString stringWithFormat:
                     @"Aby usunąć związek, '%@' musi być pusty.", attributeName];
                  break;
               case NSValidationNumberTooLargeError:
                  msg = [NSString stringWithFormat:
                     @"Liczba atrybutów '%@' jest zbyt duża.", attributeName];
                  break;
               case NSValidationNumberTooSmallError:
                  msg = [NSString stringWithFormat:
                     @"Liczba atrybutów '%@' jest zbyt mała.", attributeName];
                  break;
               case NSValidationDateTooLateError:
                  msg = [NSString stringWithFormat:
                     @"Data atrybutu '%@' jest zbyt późna.", attributeName];
                  break;
               case NSValidationDateTooSoonError:
                  msg = [NSString stringWithFormat:
                     @"Data atrybutu '%@' jest zbyt wczesna.", attributeName];
                  break;
               case NSValidationInvalidDateError:
                  msg = [NSString stringWithFormat:
                     @"Data atrybutu '%@' jest nieprawidłowa.", attributeName];
                  break;
               case NSValidationStringTooLongError:
                  msg = [NSString stringWithFormat:
                     @"Tekst atrybutu '%@' jest zbyt długi.", attributeName];
                  break;
               case NSValidationStringTooShortError:
                  msg = [NSString stringWithFormat:
                     @"Tekst atrybutu '%@' jest zbyt krótki.", attributeName];
                  break;
               case NSValidationStringPatternMatchingError:
                  msg = [NSString stringWithFormat:
                     @"Tekst atrybutu '%@' nie odpowiada wymaganemu wzorcowi.",
                        attributeName];
                  break;
               default:
                  msg = [NSString stringWithFormat:
                     @"Nieznany błąd (kod %i).", [error code]];
                  break;
            }
            messages = [messages stringByAppendingFormat:@"%@%@%@\n", 
               (entityName?:@""), (entityName?@": ":@""), msg];
         }

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