Я использую 2 контекста управляемых объектов для эффективного важного большого набора данных в фоновом режиме.Я гарантирую, что я использую только 1 контекст управляемого объекта за раз в потоке.
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:[self persistentStoreCoordinator]];
MetricType *metricType = [self metricTypeForName:self.metricName fromContext:context];
NSLog(@"metric context %@", [metricType managedObjectContext]);
[self processDataInContext:context forMetric:metricType];
В приведенном выше фрагменте кода NSLog правильно распечатывает адрес управляемогоObjectContext, который я использую,Затем я перехожу к processDataInContext - это просто закрытый метод для взаимодействия с массивом данных json и добавления объектов.Каждый объект имеет отношение к MetricType.
Однако, когда я иду связать их
metric.metricType = metricType;
, я получаю сообщение об ошибке: Неверная попытка установить отношение 'metricType' между объектами в разныхконтексты .... даже при том, что я гарантирую, что я не делаю этого.
Когда я делаю вывод журнала перед этой строкой:
NSLog(@"My Context %@", context);
NSLog(@"metric context %@", [metricType managedObjectContext]);
Контекст metricType возвращает nil !!
Как это стало ноль?Я не нил это, и это, кажется, причина его жалобы.