Entity XXX는 키 "(null)에 대한 키 가치 코딩 호환이 아닙니다.
-
12-09-2019 - |
문제
핵심 데이터 엔티티의 간단한 테이블 뷰 편집기를 작성하려고합니다. 불행히도 나는 문제가 발생합니다.
첫 번째 엔티티를 테이블에 추가 할 때 오류가 발생합니다. 모달 대화 상자를 제기하는 프로세스는 다음과 같습니다.
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Group" inManagedObjectContext:context];
insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
NSManagedObject *newManagedObject = [[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
NameEditController *dialog = [[NameEditController alloc] init];
dialog.managedObject = newManagedObject;
[newManagedObject release];
UINavigationController *navCtrlr = [[UINavigationController alloc] initWithRootViewController:dialog];
navCtrlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[[self navigationController] presentModalViewController: navCtrlr animated:YES];
[navCtrlr release];
내면에 NameEditController
, 완료 버튼을 누른 후에 : 다음과 같습니다.
NSString* name = self.nameLabel.text;
[self.managedObject setValue:name forKey:@"name"];
NSError *error = nil;
if (![managedObject.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
UIViewController *ctrl = [self parentViewController];
[ctrl dismissModalViewControllerAnimated:YES];
객체를 처음 만들 때 (목록이 비어있을 때) 이것을 얻습니다.
핵심 데이터 변경 처리 중에 예외가 잡혔습니다. [ValueForundEfinedKey :] : 엔티티 그룹은 키에 대한 주요 가치 코딩 호환 "(null)"이 아닙니다.
대화 상자를 제기하기 전에 '이름'필드를 작성하면 첫 번째 엔티티를 성공적으로 추가 할 수 있습니다.
NewManageDobject SetValue :@"New Group"Forkey :@"name"]; // 이것은 작동합니다
나는 사용 중입니다 NSFetchedResultsController
테이블보기 BTW를 관리하려면
감사!
해결책 2
yarr ... 죄송합니다. didChangeObject:atIndexPath:forChangeType:newIndexPath:
다른 곳에서 급히 복사했습니다. 분명히 여기에 던져진 예외는 save:
방법.
다른 팁
첫 번째 코드 블록에서 세 번째 코드 줄은 컨텍스트를 벗어난 것으로 보입니다. 기여할 수있는 것이 있는지 확실하지 않습니다.
둘째, 엔티티 이름에서 nsmanagedObject를 nsmanagedObjectContext로 가져 오는 가장 쉬운 방법은 [nsentityDescription insertNewObjectForentityName : inmanageDobjectContext :] selector를 사용하는 것입니다.
그래서 나는 다음과 같은 일을 할 것입니다.
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityName:@"Group" inManagedObjectContext:context];
nsentityDescription insertNewObjectForentityName : inmanagedObjectContext :] 선택기는 0 인 객체를 반환하기 때문에 더 이상 NewObject를 릴리스 할 필요가 없습니다.
실제 문제를 해결하기 위해 데이터 모델에서 필요한 속성으로 지정된 '이름'이있을 수 있습니까? 데이터 모델에서 '이름'에 대한 세부 정보를 보여주는 스크린 샷이 도움이됩니다.