У меня есть два экземпляра NSManagedObjectContext
: один используется в основном потоке, а другой - в фоновом потоке (через NSOperation
.) В целях обеспечения безопасности потока эти два контекста имеют только NSPersistentStoreCoordinator
.
Проблема, с которой я столкнулся, заключается в том, что ожидающие изменения в первом контексте (в основном потоке) недоступны для второго контекста, пока не будет выполнено -save
. Это понятно, поскольку в общем постоянном хранилище не будет сохранено копий NSManagedObjects
, отслеживаемых -insertedObjects
, -updatedObjects
и -deletedObjects
.
К сожалению, это представляет проблему с пользовательским интерфейсом: любые несохраненные изменения не будут отображаться в (отнимающих много времени) отчетах, которые генерируются в фоновом потоке.
Единственное решение, которое я могу придумать, это противное: взять вставленные, обновленные и удаленные объекты из первого контекста и перенести их на граф объектов второго контекста. В наборе данных есть довольно сложные отношения, поэтому я не решаюсь идти в этом направлении. Я надеюсь, что кто-то здесь, как лучшее решение.