0

내 앱에서는 NSManagedObjectContexts 두 개를 사용하여 하나는 영구 데이터를 저장하고 다른 하나는 임시 데이터를 처리하기 위해 사용합니다. 따라서 NSManagedObject 하위 클래스로 작업 할 수 있습니다.executeFetchRequest는 다른 NSManagedObjectContext의 엔티티를 반환합니다.

임시 NSManagedObjectContext에 임시 엔티티를 만든 후 가져 오기 요청을 실행할 때 영구적으로 저장된 엔티티와 임시 엔티티를 모두 가져옵니다. 당신의 도움에 대한

//create temporarily stored entity 
Entity *entity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:temporaryManagedObjectContext]; 

//... 

//get permanently stored entities 
NSMutableArray *mutableFetchResults = [[[permanentManagedObjectContext executeFetchRequest:request error&error] mutableCopy]; 

감사 :

여기 내 코드입니다!

+1

임시 컨텍스트가 어떻게 생성됩니까? 새 개체를 삽입 한 후 저장됩니까? –

+0

영구 컨텍스트와 동일한 NSPersistentStoreCoordinator를 사용하여 만들어졌으며 절대로 저장되지 않습니다. – Hannes

+0

이상하게도 짧은 테스트 프로그램에서 동작을 재현 할 수 없습니다. –

답변

0

귀하의 의견은 내 오류로 이어집니다. 매우 바보입니다. 영구 컨텍스트에서 임시 컨텍스트 생성을위한 코드를 복사하고 모든 발생을 대체하는 것을 잊었습니다.

if (temporaryManagedObjectContext != nil) return temporaryManagedObjectContext; 

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
if (coordinator != nil) { 
    temporaryManagedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [temporaryManagedObjectContext setPersistentStoreCoordinator:coordinator]; 
} 

//returned the wrong NSManagedObjectContext 
return permanentManagedObjectContext;