Все, что я читал об использовании Core Data в нескольких потоках, говорит об использовании нескольких NSManagedObjectContext
экземпляров, совместно использующих один NSPersistentStoreCoordinator
. Это понятно, и я заставил его работать в приложении, которое использует базовые данные в основном потоке для поддержки пользовательского интерфейса и имеет операцию фоновой выборки, которая может занять некоторое время.
Проблема заключается в том, что доступ к базовому постоянному хранилищу SQLite сериализуется NSPersistentStoreCoordinator
, поэтому все еще бывают случаи, когда пользовательский интерфейс блокируется операцией фонового извлечения.
Операция фонового извлечения никогда не обновит данные, а только прочитает их. Могу ли я установить полностью параллельный стек Core Data (NSManagedObjectContext
, NSManagedPersistentStoreCoordinator
и NSManagedObjectModel
) в фоновом потоке, подключенном к тому же базовому постоянному хранилищу SQLite? Кажется, что это даст полный параллелизм между потоком пользовательского интерфейса и операцией фонового извлечения.