저는 Core Data를 사용하는 앱을 가지고 있으며 UIManagedObject를 사용하여 ManagedObjectContext를 가져옵니다. 읽기에서 나는 컨텍스트를 직접 저장하지 않는 것을 보았습니다. 오히려 UIManagedObject의 자동 저장에 의존하거나 saveToURL을 사용해야합니다. 내 문제는 내 엔티티에 저장된 데이터의 유효성을 검사하려고한다는 것입니다. 문자열 속성의 최소 길이를 1로 지정하는 엔티티에 대한 제약 조건이 있습니다. 그러나 새 개체를 만들고 해당 속성의 빈 문자열을 할당 한 다음 파일을 저장할 수 있습니다. saveToURL의 완료 처리기에서 ... ... 항상 실제 성공 값을가집니다. 그런 다음 내 엔티티의 name 속성에 대한 자체 유효성 검사기를 만들었습니다. 내가 코어 데이터 프로그래밍 가이드에서 샘플 코드를 사용 -UIManagedDocument - 핵심 데이터 엔티티 유효성 검사
-(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를 사용하여 오류를 저장하는 방법을 처리하지 못했습니다. 특히 정보를 저장하는 동안 오류가 발생했다는 것을 호출 코드에 알리는 방법이 있습니다.