사과 문서를 읽었지만 여전히 답변을 찾을 수 없다는 질문이 있습니다. 두 개의 중첩 된 컨텍스트가있는 UIManagedDocument 개체가 있습니다. 자식 스레드는 주 스레드에 있고 부모 스레드는 개인 스레드에 있습니다. 그리고 나서, 나는 서버 쪽을 가졌다. 그래서, 서버에서 데이터가 도착하면 배경 스레드에서 관리되는 문서에 삽입하려고합니다.UIManagedDocument 중첩 된 컨텍스트
비동기식 대기열을 만들고 거기에 NSManagedObjectContext를 만들고 스레드로 만든 상위 UIManagedDocument의 하위 컨텍스트로 설정하면 스레드로부터 안전합니까? 즉
dispatch_queue_t fetchQ = dispatch_queue_create("Data fetcher", NULL);
dispatch_async(fetchQ, ^{
//here goes some code for downloading data from the server
NSManagedObjectContext * backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundContext setParentContext:self.eventDatabase.managedObjectContext]; // is this thread safe?
//some code for creating objects in backgroundContext
NSLog(@"inserting data in background thread");
});
dispatch_release(fetchQ);
는 - 그는 주 스레드에서 만들어진, 그것은 개인 스레드 부모에 생성 된 컨텍스트에 할당 할 스레드 안전입니까?
[backgroundContext save : & error]를 반드시 호출해야합니다. 그렇지 않으면 변경 사항이 부모 컨텍스트로 푸시되지 않습니다. –
그는 단지 UIManagedDocument의 parentContex를 사용하지 않습니다.이 컨텍스트는 백그라운드에서 실행됩니까? –