2013-12-07 2 views
0

부모 1 명의 자녀가있는 moc 상황이 있습니다. 하위의 1 개가 기본 인터페이스 moc이고 다른 하나는 클라우드의 동기화 변경을위한 개인 큐입니다.가져 오기시 하위 Moc에서 최근 변경 사항을 가져 오지 못함

개인 클라우드 동기화 하위 모드가 변경 사항을 저장하는 상황으로 바뀌 었습니다. 부모는 변경 사항을 볼 수 있지만 다른 인터페이스 하위 moc은 변경 사항을 볼 수 없습니다.

TeamMembers라는 일대일 관계 필드가있는 Team이라는 엔티티가 있습니다. 비공개 대기열에 저장 한 후 상위 moc에서 팀 엔티티를 가져 와서 모든 변경 사항을 올바르게 가져옵니다. 그 후, 나는 인터페이스 자식 moc을 가져오고 변경 사항을 가져 오지 않습니다. 다른 하위 moc을 만들면 변경이 발생합니다.

아이디어가 있으십니까?

답변

1

인터페이스 컨텍스트의 캐시 된 개체가 부모 컨텍스트에서 자동으로 업데이트되지 않기 때문에 동일한 문제가 발생했습니다.

- (void)contextDidSave:(NSNotification *)notification { 
    SEL selector = @selector(mergeChangesFromContextDidSaveNotification:); 
    [interfaceContext performSelectorOnMainThread:selector withObject:notification waitUntilDone:YES]; 
} 

이 표준 솔루션이 될 것 같다 : 수동으로 기본 컨텍스트에 부모 컨텍스트에 저장된 변경 사항을

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(contextDidSave:) 
              name:NSManagedObjectContextDidSaveNotification 
              object:parentContext]; 

및 합병이를 처리하기 위해,이 같은 NSManagedObjectContextDidSaveNotification에 옵저버를 추가 (즉, Core Data merge two Managed Object Context)

+0

훌륭한 제안으로, 나는 이것이 이유 일 수 있다고 생각한다. 나는 그것을 가지게 될 것이다. –