У меня есть два контекста управляемого объекта с той же моделью данных. Единственное различие заключается в том, что один является readonly, а другой - чтением/записью. Я хочу найти объект, который может находиться в любом из этих двух контекстов управляемых объектов. Поэтому я создаю fetchrequest и хочу использовать fetchrequest для обоих контекстов управляемых объектов.Один FetchRequest в двух ManagedObjectContexts
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 работает с обоими контекстами управляемых объектов, когда оба контекста сохраняются. Всякий раз, когда вы ищете ожидающие изменения, публичный (второй) контекст не возвращает результаты.
спасибо !! «Контекст, заполненный в последний момент, когда вы выполняете запрос выборки с помощью метода NSManagedObjectContext (метод фабрики NSEntityDescription включает контекст)». Это именно то, что я искал. –