2012-07-04 2 views
0

종료 :배경 스레드에서 코어 데이터를 검색, 기능이 내 검색 기능입니다 무작위로

2012-07-05 00:04:46.706 MyApp[2376:207] Place 1 
2012-07-05 00:04:46.783 MyApp[2376:207] Place 2 
2012-07-05 00:04:46.823 MyApp[2376:207] searching End 

검색 방법을 12 번 수행 한 후이 위치에서 중지합니다.

2012-07-05 00:11:42.174 MyApp[2376:207] Place 1 

여러 번 검색을 계속하면 정상적으로 돌아갑니다. 그리고 다시 이상한 ... 그것은 내가 당혹하게 만듭니다.

다른 멀티 스레드 메소드를 시도하는 데 많은 시간을 할애했지만 그 결과는 여전히 동일합니다.
제발 도와주세요! 고맙습니다!

+0

해당 백그라운드 스레드에서 NSManagedContext'context'를 만들었습니까? –

+0

Apple의 문서 [핵심 데이터 동시성] (http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/coredata/Articles/cdConcurrency.html#//apple_ref/doc/uid/)을 읽었습니다. TP40003385-SW1) 그러나 아직 objectWithID를 사용하여 NSManagedObjectContext를 만드는 방법을 모릅니다. – Jimi

답변

2

코어 데이터는 스레드로부터 안전하지 않습니다. 당신은 자신의 배경 스레드에 NSManagedObjectContext을 만들어야합니다. 이를 통해 백그라운드에서 검색을 수행 할 수 있습니다. 그런 다음 관리 대상 객체를 직접 주 스레드로 보낼 수 없습니다. 주 스레드를 통해 객체 ID를 전송해야하며 objectWithID: 메소드를 사용하여 주 컨텍스트에서 객체를 가져와야합니다.

+1

감사합니다. Sven! 내 질문을 개정하고 NSManagedObjectContext를 만드는 코드를 추가했습니다. 또한 objectID를 사용하여 NSManagedObjectContext를 만들려고했지만 실패했습니다. 샘플 코드 좀 보여 주시겠습니까? – Jimi