Могу ли я установить родительский контекст моего ManagedObjectContext в ManagedObjectContext с другим типом параллелизма?Например:
backgroundManagedObjectContext_ = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundManagedObjectContext_ setPersistentStoreCoordinator:coordinator];
managedObjectContext_ = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[managedObjectContext_ setParentContext:backgroundManagedObjectContext_];
Моя цель - (надеюсь) получить быстрое сохранение для управляемогоObjectContext_ (так как ему нужно только сохранить вещи в родительском контексте в памяти), а затем сделать backgroundManagedObjectContext_ сохранить насвоя очередь.Если мне не понадобится сделать еще одно сохранение из очереди «переднего плана», прежде чем фоновое сохранение будет сохранено, мой пользователь никогда не увидит долгое время сохранения.
Я сталкиваюсь с тем, что похоже на тупики, но я неуверен, если они связаны с этим, или если моя проблема в другом месте.
Подробности для одного места, где я могу более или менее надежно создать тупик:
У меня есть управляемыйконтекст объекта для основного потока, он поддерживается контекстом управляемого объекта с типом параллелизма частной очереди, и тот имеет постоянное хранилище.
У меня есть несколько типов сущностей (около 5), каждый содно или два двунаправленных отношения с другим объектом.
Мое приложение хочет использовать iCloud (у меня есть код, набранный для этих тестов), поэтому оно не может поставляться с предварительно заполненной базой данных, оно должносоздайте его, когда он обнаружит пустую.
Поэтому, когда я вижу пустую базу данных (это проверяется в основном потоке), я добавляю около 4 или 8 из всех, кроме одного типа сущностиs, и этот последний получает около 100 (все добавления происходят в главном потоке).Основной поток делает saveContext.После этого (без ошибок) он просит другой контекст управляемого объекта запустить блок, который также выполняет saveContext.Этот saveContext определенно является тупиковым участником.Это также ЕДИНСТВЕННАЯ штука, сделанная с "фоновым" NSManagedObjectContext вообще.
Точный поток управления после этого немного мутный, как NSFetchedResultsController (все с заданным типом сущности (который имеет ~ 3 члена)с простой сортировкой и размером пакета около 20) управляют следующим циклом активности Core Data, но из TableViewController вызывается запрос, сколько элементов ему нужно управлять, а именно, «сколько результатов выбирает контроллер результатов выборкииметь".Этот звонок - другая сторона тупика.(все это в основной ветке)