CoreData에 보관중인 값이있는 사전 구성 파일 (많은 매개 변수가 있음)이 있습니다. 내가 동시성 (CoreData에 이전 저장) 각 값을 처리하고 1 대 모든 entityName1과의 관계와 CoreData (entityName2에 저장하려면 다음핵심 데이터 동시성 : 주 스레드와 별개로 두 개의 큰 연속 작업 (큰 작업 중 하나에서 많은 동시 작업이 필요함)
Create new instance of NSManagedObjectContext: NSManagedObjectContextVariable.
[parametersInFileArray enumerateObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(id obj, NSUInteger idx, BOOL *stop){
[NSManagedObjectContextVariable performBlock:^{
bla-bla-bla
insertNewObjectForEntityForName:entityName1 inManagedObjectContext:NSManagedObjectContextVariable;
[NSManagedObjectContextVariable save:&error];
}
}
: 의이 호출 첫 번째 작업을하자). 두 번째 작업이라고합시다.
1.Create new instance of NSManagedObjectContext.
2.Get (NSArray *)fetchedObjects form entity("entityName1")
3.
[fetchedObjects enumerateObjectsUsingBlock:^(entityName1Class *obj, NSUInteger idx, BOOL *stop){
NSArray* newParameters = getManyNewParametersForObj(obj);
[newParameters enumerateObjectsUsingBlock:^(Parameter *param, NSUInteger idx, BOOL *stop)
{
bla-bla-bla
insertNewObjectForEntityForName:entityName2 inManagedObjectContext:NSManagedObjectContextVariable;
[NSManagedObjectContextVariable save:&error];
}
}
So. 작업 1과 작업 2를 서로 연속적으로 실행해야합니다. 그리고 메인 스레드와 분리해라. 두 번째 작업은 첫 번째 작업이 완료 될 때까지 시작할 수 없습니다.
는 작업 2에서 나는 + insertNewObjectForEntityForName + 것은 fetchedObjects OBJ() 동시성에서 각 요소에 대해을 저장 getManyNewParametersForObj를 시작해야합니다. 긴 작업 (Net에서 매개 변수 가져 오기)이며 서로 의존하지 않습니다.
작업 1과 작업 2의 모든 저장시에 NSTableView (Observe NSManagedObjectContextDidSaveNotification)를 업데이트합니다.
나는 매우 dispatch_apply에 의해 혼란 스러워요, performBlock, enumerateObjectsUsingBlock, enumerateObjectsUsingBlock, enumerateObjectsWithOptions : parallelQueue 등 NSEnumerationConcurrent, semaphoreWait, semaphoreBlock, blockUntilWait, serialQueue,
어떻게 무엇을해야하는 나에게 조언. 감사합니다. .