알겠습니다. 문제를 해결하는 방법을 모르겠습니다.NSManagedObjectContextDidSaveNotification 이벤트가 겹쳐지는 것을 방지하십시오.
다른 문맥을 가진 다른 스레드에서 CoreData 데이터베이스를 업데이트했습니다. 내 문제는 때로는 NSManagedObjectContextDidSaveNotification 이벤트가 중복되어 크래시로 이어지는 기본 손상을 생성한다는 것입니다. 다음은 예입니다 :이 의사 코드 예제 process1에서
Thread Main NSFetchResultsController
Update database
Save database NSManagedObjectContextDidSaveNotification1
merge delegate process 1
process 1 done
Update database
Save database NSManagedObjectContextDidSaveNotification2
merge delegate process 2
process 2 done
Update database
Save database NSManagedObjectContextDidSaveNotification3
merge delegate process 3
Update database
Save database NSManagedObjectContextDidSaveNotification4
merge
process 3 done
delegate process 4
CRASH
process 4 done
및 process2이 문제 없이 작동하지만 때로는 메인 쓰레드가 중복 수신 업데이트 이벤트와 당신이 process3이 완료되기 전에 데이터베이스를 읽기 시작할 process4했다.
이를 처리 할 공식적인 방법이 있습니까? CoreData는 이러한 상황에 대해 솔루션을 제공합니까, 아니면 NSLock을 사용해야합니까?
감사
병합 알림을 처리하는 코드 부분을 게시 할 수 있습니까? 그것이 없으면, 나는 추론 할 수있는 사람이 더 있다고 생각하지 않는다. 내가 대답 할 때 말했듯이 컨텍스트는 영구 저장소 코디네이터를 일련 액세스로 잠 그어 이러한 종류의 문제를 방지해야합니다. – paulbailey