2

NSFetchedResultsController가 제공하는 UITableViewController가 있습니다. 이를 통해 사용자는 새로운 데이터를 입력 할 수있는 모달 ViewController를 호출 할 수 있습니다. 이것은 시작으로 다음과 같이 내가 임시 객체를 생성 : 사용자가 선택을하게어떻게 NSFetchedResultsController의 작업을 일시 중단 할 수 있습니까?

newPtr = [[Entry alloc] initWithEntity:[NSEntityDescription 
entityForName:@"Entry" inManagedObjectContext:self.nmocontext] 
insertIntoManagedObjectContext:self.nmocontext]; 

,이 '임시'개체의 속성은, newPtr가 설정됩니다.

모달 ViewController가 표시되는 동안 기본 UITableViewController가 활성 상태로 유지되는 것이 문제입니다. 그것은 newPtr의 필수 속성이 아직 설정되지 않았다는 것을 깨닫게되면 어떤 경우에는 놀라움을 금치 (크래시를 유발 함)하는 것처럼 보입니다.

모달 ViewController가 닫힐 때까지 NSFetchedResultsController가 내 관리 대상 객체 컨텍스트를 보지 못하게하려면 어떻게해야합니까?

답변

1

나는 나 자신이 시험하지 않았다하지만 가능한 접근 방식은 viewWillAppearviewWillDisappear을 구현하고 사라집니다 nil 나타납니다 self에 fetchedResultsController 대리자를 설정하는 것입니다.

또는

당신은 당신의 편집 창에 NSManagedObject의 특성을 반영 NSObject라는를 만들 수. 일단 사용자가 속성 편집을 완료하면 (그리고 적절한 유효성 검사 규칙을 실행 한 경우) NSManagedObject 인스턴스로 다시 전달하고 fetchedResultsController가 해당 작업을 수행하게 할 수 있습니다.

+0

고마워요! 내가 생각하기에 매우 흥미로운 아이디어. Stack Overflow가 몇 시간 동안 중단되어서 fetchedResultsController를 만족시키기 위해 newPtr에 가짜 속성을 부여했습니다. 그게 효과가있어. – ed94133

0

핵심 데이터는 독립적 인 취소 가능 변경 세트를 쉽게 지원할 수있는 유연한 아키텍처를 허용하는 "중첩 된"관리 객체 컨텍스트를 지원합니다. 하위 컨텍스트를 사용하면 사용자가 관리 대상 객체에 대한 일련의 변경 작업을 수행 할 수 있도록 허용 할 수 있습니다.이 변경 사항은 상위 트랜잭션 (또는 최종적으로 저장소에 저장)에 단일 트랜잭션으로 커밋되거나 삭제 될 수 있습니다. 응용 프로그램의 모든 부분이 단순히 응용 프로그램 위임자와 동일한 컨텍스트를 검색하는 경우이 동작을 지원하기가 어렵거나 불가능하게 만듭니다.

관련 문제