複数のスレッドでCore Dataを使用していることについては、NSManagedObjectContext
複数のインスタンスを使用してNSPersistentStoreCoordinator
を共有することについて話しました。これは理解されており、UIのサポートでメインスレッドでコアデータを使用し、実行に時間がかかるバックグラウンドフェッチ操作があるアプリで動作させました。複数のNSPersistentStoreCoordinatorインスタンスを同じ基本SQLite永続ストアに接続できますか?
基本的なSQLite永続ストアへのアクセスがNSPersistentStoreCoordinator
でシリアル化されているため、バックグラウンドフェッチ操作でUIがブロックされることがあります。
バックグラウンドフェッチ操作では、データは更新されず、データの読み取りのみが行われます。同じ基本SQLite永続ストアに接続されたバックグラウンドスレッドに、完全に並列なコアデータスタック(NSManagedObjectContext
、NSManagedPersistentStoreCoordinator
、およびNSManagedObjectModel
)を設定できますか?これは、UIスレッドとバックグラウンドフェッチオペレーションの間に完全な並行性を与えるようです。
こんにちは、これはまだあなたのためにうまくいきますか?私はこれのような何かをする必要がありますが、私はオンラインで答えを見つけていません。 – jasongregori
私は今までこの方法で何の問題も持っていませんでした。 – GBegen
私が理解しているように、SQLiteは複数の並行リーダと1つのライタをサポートしています。したがって、各NSPersistentStoreCoordinatorはリーダーになるため、完全に可能です。 –