2010-04-17 3 views
0

스레딩과 CoreData를 결합한 응용 프로그램이 있습니다.NSManagedObjectMergeError 오류 [NSManagedObjectContext save :]에 대한 이유

하나의 글로벌 NSPersistentStoreCoordinator과 메인 NSManagedObjectContextModel을 사용하고 있습니다.

나는 9 개의 파일을 동시에 다운로드해야하므로 다운로드를 처리 할 개체 (각 개별 다운로드에는 자체 개체가 있음)를 만들고 persistentStoreCoordinator에 저장하는 프로세스가 있습니다.

[NSURLConnection connectionDidFinishLoading:] 메서드에서 새 NSManagedObject을 만들고 데이터를 저장하려고합니다 (이 데이터도 주 managedObjectContext과 병합됩니다).

다운로드가 동시에 완료되는 것과 동시에 여러 프로세스가 persistentStoreCoordinator에 저장하려고했기 때문에 실패한 것 같습니다.

이 오류를 제거하고 파일을 독립적으로 다운로드하는 가장 쉬운 방법은 무엇입니까?

답변

3

NSManagedObjectContext 인스턴스는 NSPersistentStoreCoordinator을 잠그는 방법을 알고 있습니다. 이미 스레드 당 하나의 NSManagedObjectContext을 사용하고 있기 때문에 문제가되지 않을 가능성이 큽니다.

오류가 무엇인지 알면 도움이됩니다. NSError을 열고 -userInfo을 확인하십시오. userInfo 사전에 NSDetailedErrors 키가 포함되어있는 경우 이 키와 관련된 값은 반복 할 수있는 배열이며 내부의 모든 오류를 살펴볼 수 있습니다. 그것은 무슨 일이 일어나고 있는지 판단하는 데 도움이 될 것입니다.

오류는 유효성 검사 또는 누락 된 필수 값과 같은 간단한 것이 될 수 있으며 실제 스레딩과는 아무런 관련이 없습니다.

관련 문제