Я создал два таких контекста:
// create writer MOC
_privateWriterContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_privateWriterContext setPersistentStoreCoordinator:_persistentStoreCoordinator];
// create main thread MOC
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
_managedObjectContext.parentContext = _privateWriterContext;
У меня есть NSFetchResultedController
, начинающийся с _managedObjectContext
.
Я знаю, что это странно, но я добавляю запись родительскому элементу _privateWriterContext
, я saving
it.
Удивительно, что дочерний контекст и поэтому FRC
получает уведомление об этом событии. Зачем? У меня не есть reset
-ed ребенок, или что-то еще. Я думал, что они независимые объекты, пока детский контекст не будет сохранен.
В статье @pteofil я нашел эту строку:
Когда изменение производится в контексте, но не сохраняется, оно видимо для всех его потомков, но не для его предков.
.. он помещается в постоянное хранилище (через постоянный координатор хранилища) и становится видимым для всех контекстов, связанных с хранилищем.