У меня есть приложение, которое использует Core Data, и оно получает ManagedObjectContext с помощью UIManagedObject.Из прочтения я вижу, что я не предполагаю сохранять контекст напрямую - скорее я должен зависеть от автосохранения UIManagedObject или использовать saveToURL: ... Моя проблема заключается в том, что я хочу проверить данные, хранящиеся в моей сущности.У меня есть ограничения на сущность, которые указывают, что минимальная длина для строковых свойств равна 1. Однако я могу создать новый объект, присвоить его свойствам пустые строки и сохранить файл.В обработчике завершения saveToURL: ... он всегда имеет истинное значение успеха.Затем я создал свой собственный валидатор для свойства name моей сущности.Я использовал пример кода из Руководства по программированию основных данных -
-(BOOL)validateName:(id *)ioValue error:(__autoreleasing NSError **)outError
{
if (*ioValue == nil)
{
if (outError != NULL)
{
NSString *errorStr = @"nil error";
NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:errorStr
forKey:NSLocalizedDescriptionKey];
NSError __autoreleasing *error = [[NSError alloc] initWithDomain:@"domain"
code:1
userInfo:userInfoDict];
*outError = error;
}
return NO;
}
else if( [*ioValue length] == 0 )
{
if (outError != NULL) {
NSString *errorStr = @"length error";
NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:errorStr
forKey:NSLocalizedDescriptionKey];
NSError __autoreleasing *error = [[NSError alloc] initWithDomain:@"domain"
code:1
userInfo:userInfoDict];
*outError = error;
}
return NO;
}
else
{
return YES;
}
}
Когда он запускается, я вижу, что ioValue имеет длину 0 и возвращает NO, но мой обработчик завершения никогда не вызывается.Любая помощь была бы полезна.
Есть ли что-то, чего мне не хватает для обработки ошибок сохранения с помощью UIManagedDocument, в частности, как уведомить вызывающий код о том, что произошла ошибка при сохранении его информации.