동일한 데이터 모델을 사용하는 두 개의 Managed Object Context가 있습니다. 유일한 차이점은 하나는 읽기 전용이고 다른 하나는 읽기/쓰기입니다. 나는이 두 관리 객체 컨텍스트 중 하나에있을 수있는 객체를 검색하려고합니다. 그래서 나는 fetchrequest를 만들고 관리 된 객체 컨텍스트 모두에서 fetchrequest를 사용하려고합니다.2 개의 ManagedObjectContext에서 하나의 FetchRequest
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
[fetchRequest setIncludesPendingChanges:YES];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name=%@", name];
NSError *error = nil;
NSArray *privateobjects = [self.privateManagedObjectContext executeFetchRequest:fetchRequest error:&error];
if (privateobjects && privateobjects.count > 0)
{
return privateobjects[0];
}
NSArray *publicobjects = [self.publicManagedObjectContext executeFetchRequest:fetchRequest error:&error];
if (publicobjects && publicobjects.count > 0)
{
return publicobjects[0];
}
return nil;
위 코드는 공용 관리 객체 컨텍스트의 결과를 반환하지 않습니다. fetchrequest를 다시 작성하여이 문제를 해결할 수 있습니다. 그래서 내 질문에, 왜 하나의 fetchrequest가 관리 객체 환경에서 작동하지 않습니까?
편집 : fetchrequest는 두 개의 컨텍스트가 저장 될 때 관리되는 개체 컨텍스트 모두에서 작동하는 것으로 보입니다. 보류중인 변경 사항을 검색 할 때마다 public (두 번째) 컨텍스트는 결과를 반환하지 않습니다.
고맙습니다! "마지막 순간에 NSManagedObjectContext 메서드를 사용하여 가져 오기 요청을 실행할 때 컨텍스트가 채워집니다 (NSEntityDescription 팩터 리 메서드에 컨텍스트가 포함됨)." 그게 바로 제가 찾고 있던 것입니다. –