문제

핵심 데이터 엔티티의 간단한 테이블 뷰 편집기를 작성하려고합니다. 불행히도 나는 문제가 발생합니다.

첫 번째 엔티티를 테이블에 추가 할 때 오류가 발생합니다. 모달 대화 상자를 제기하는 프로세스는 다음과 같습니다.

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를 릴리스 할 필요가 없습니다.

실제 문제를 해결하기 위해 데이터 모델에서 필요한 속성으로 지정된 '이름'이있을 수 있습니까? 데이터 모델에서 '이름'에 대한 세부 정보를 보여주는 스크린 샷이 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top