0

dispatch_async 작업을 사용하여 일부 연락처가있는 목록을 검색하고 있습니다.
이 목록에서 연락처를 선택할 때이 연락처에 대한 추가 정보를 얻기 위해 저장 관리자를 호출합니다.
오류가 발생합니다. 다른 컨텍스트의 개체간에 관계가 설정되지 않았습니다. ...
어떻게 해결할 수 있습니까?dispatch_async 작업에서 컨텍스트의 문제가 발생했습니다.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
     sections = [self getContactList]; 
    }); 

informationList = [StorageManager getInfoForContact:[sections objectAtIndex:1]]; 

오류가 informationList와 라인에 있습니다 :
다음은 내 코드입니다. 누군가가 나를 해결하도록 도울 수 있습니까?

+0

읽기 코어 데이터 동시성 가이드 적어도 세 번, 그 다음 블록에 새로운 문맥을 확립하고 주요 상황 전파됩니다 저장 한 후 확인을 변경합니다. 컨텍스트간에 객체를 전달할 때 objectID를 사용해야한다는 점에 유의하십시오. – Volker

+0

제 대답이 당신을 도울 수 있기를 바랍니다. –

답변

0

나는 전체적인 문제를 파악하지 못했습니다. 그러나 [self getContactList]을 비동기 블록으로 호출하고 있습니다. 따라서 [self getContactList]이 실행되는 동안 블록 외부의 다음 줄이 호출됩니다. 즉 의미

sections = [self getContactList]; 

은 아마 당신의 오류가 : 전에

informationList = [StorageManager getInfoForContact:[sections objectAtIndex:1]]; 

이 실행됩니다.

시도 :

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
    sections = [self getContactList]; 
    dispatch_sync(dispatch_get_main_queue(), ^{ 
     informationList = [StorageManager getInfoForContact:[sections objectAtIndex:1]]; 
    }); 
});