2011-09-12 4 views
3

동일한 영구 저장소 조정자 (및 모델)를 사용하여 직렬 GCD 대기열에서 보조 managedobjectcontext를 사용하고 있습니다. 문제는 보조 managedObject 모델이 비어있는 것입니다. 즉, 모든 페치 요청은 아무 것도 반환하지 않습니다. 나는 sqlite 저장소를 사용하고있다. 나는 주 스레드에서 같은 일을 아무 소용이 시도했다.여러 NSManagedObjectContext 문제

코드는 매우 간단합니다. CoreDataUtility는 싱글 톤이며, 싱글 톤의 manageObjectContext 멤버는 다른 관리 객체 컨텍스트입니다.

NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [managedObjectContext setPersistentStoreCoordinator:[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator]; 

가져 오기 요청 (여러 번 시도했습니다)은 엄마를 제외하고는 동일합니다.

보조모는 디버거에서 정상적으로 보입니다. 기본 엄마와 동일한 것으로 예상되는 속성은 사실 동일합니다.

답변

0

문제는 모델을로드하는 방식과 관련이 있습니다. 왜 이것이 효과가 있었는지에 대한 설명이 없지만 문제가 해결되었습니다. 아마 다른 누군가가 해명 할 수 있습니다.

이 코드 : 내가 처음 컨텍스트에서 유효한 개체를 얻을, 다음의 OBJECTID를 검색하려고하면

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"mymodel" ofType:@"momd"]; 
NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; 
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
0

[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator에서 반환 된 영구 저장소 코디네이터가 올바른 경우 (이 사실을 확인 했습니까?),이 부분은 적어도 괜찮습니다.

내 자신의 응용 프로그램에서 비슷한 접근 방식을 사용하고 배경 컨텍스트를 만드는 코드는 주 컨텍스트와 완전히 동일합니다. 나는 그 문제가 다른 곳에있을 것으로 기대한다.

NSManagedObject *backgroundObject = [backgroundContext existingObjectWithID:object error:&error]; 

그리고 개체가 여전히 유효한지보고 :

는 메인 컨텍스트에서 개체에 액세스 한 후 오류있는 객체를 사용하여 다른 컨텍스트에 시도?

+0

내가 다른에서 널 수 :

managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; 

이 코드로 대체 문맥. 엄마와 똑같은 일을하고 있어요. 똑같은 영구 저장소 코디네이터에요. – John

+0

해당 작업에서 다음 오류가 발생합니다. 오류 : 도메인 = NSCocoaErrorDomain Code = 133000 "작업을 완료 할 수 없습니다. (코코아 오류 133000) – John

+0

"엄마 "라고 말하면 모델이 아닌 컨텍스트를 의미한다고 가정합니다. – Stuart

관련 문제