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