Копирование ожидающих изменений между NSManagedObjectContexts с общим постоянным хранилищем?

У меня есть два экземпляра NSManagedObjectContext: один используется в основном потоке, а другой используется в фоновом потоке (через NSOperation.) В целях безопасности потоков эти два контекста имеют только общий NSPersistentStoreCoordinator.

Проблема, с которой я столкнулся, заключается в том, что отложенные изменения в первом контексте (в основном потоке) недоступны для второго контекста, пока не будет выполнено -save. Это понятно, поскольку в общем постоянном хранилище не будет копий NSManagedObjects, отслеживаемых -insertedObjects, -updatedObjectsи -deletedObjectsсохраняются.

К сожалению, это создает проблему для пользователя: любые несохраненные изменения не будут отображаться в (отнимающих много времени) отчетах, генерируемых в фоновом потоке.

Единственное решение, которое я могу придумать, ужасно: взять вставленные, обновленные и удаленные объекты из первого контекста и привить их к графу объектов второго контекста. В наборе данных есть довольно сложные отношения, поэтому я не решаюсь идти в этом направлении. Я надеюсь, что кто-то здесь как лучшее решение.

5
задан chockenberry 15 March 2012 в 21:25
поделиться