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