2

重複の可能性:
Core Data vs SQLite 3

iOSアプリケーションでデータを保存するためにSQLiteを使用しています(最大20,000行を超えるテーブルの場合)。SELECTしかし、SQLite で問題が発生しました。テーブルにデータを挿入するときにステートメントを使用しようとすると、SELECTステートメントが機能しません。

このようなものは Core Data で機能しますか? 新しいデータをデータベースに挿入すると同時に、データベースからデータを取得できますか?

4

1 に答える 1

3

はい、Core Data に対してクエリと挿入を同時に行うことができます。これは、複数のスレッドで行う必要があると思います。これを行う最善の方法は、スレッド (またはキュー) ごとに NSManagedObjectContext を持つことです。

私が設定した方法は、メイン スレッド (UI) に、データをフェッチするためだけの NSManagedObjectContext と、別のスレッドに挿入するための NSManagedObjectContext を持たせ、parentContext をメイン スレッドに設定することです。そうすれば、子コンテキストを保存すると、それらの新しいオブジェクトがメイン コンテキストに表示され、新しいフェッチを実行できます (または、NSFetchedResultsController がある場合は、それが更新されます)。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdConcurrency.html#//apple_ref/doc/uid/TP40003385

コア データに関する WWDC 2011 ビデオでは、parentContext について詳しく説明しています。

于 2012-04-23T21:29:09.403 に答える