2012-04-23 8 views
1

可能性の重複:私は(2万行、最大でテーブルのため)私のiOSアプリケーションにデータを保存するためのSQLiteを使用している
Core Data vs SQLite 3コアデータでは、データベースから他のデータを取得中にデータを挿入できますか?

。しかし、私はテーブルにデータを挿入中にSELECTステートメントを使用しようとすると、SELECTステートメントが機能しないSQLiteで問題が発生しました。

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

+0

速度の違い:CoreDataはSqlite3の周りのOO(ObjC)ラッパーであるため、少し遅くする必要があります。さもなければ:SQLiteはあなた(AFAIK)が同時にデータを挿入して取得することを許可しません。とにかく、なぜこれが欲しいのですか? –

+0

リプレイのために、私はウェブサービス(毎回最大500)からデータ(曲の詳細)をダウンロードする音楽アプリを持っています。私は最初の500行を挿入するサービスから取得する2ページ(1000曲)があり、2回目にもう一度挿入し、この時間に私はアルバム、アーティスト、ジャンルを取得するためにテーブル上の任意のSELECTを行うことはできませんこのテーブルから。だから私はCoreDataを使用して、どのような違いがあるか知りたいと思います。 – MTA

+1

私はコアの問題に焦点を当てて質問を書き直しました。コアデータで同時にデータを読み書きできますか? SQLiteとCore Dataの相違点をすべて尋ねるのはあまりにも幅広い話題であり、その根拠の多くはJasonがリンクしている質問の対象となっています。 –

答えて

3

はい、コアデータのクエリと挿入を同時に行うことができます。これは、複数のスレッドで実行したいと考えています。これを行う最善の方法は、各スレッド(またはキュー)にNSManagedObjectContextを持たせることです。

メインスレッド(UI)には、データを取得するためのNSManagedObjectContextと、別のスレッドに挿入するためのparentContextをメインのスレッドに設定する方法があります。このようにして、子コンテキストで保存すると、メインコンテキスト内に新しいオブジェクトが表示され、新しいフェッチを行うことができます(NSFetchedResultsControllerがあれば、それが更新されます)。コアデータについて

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

WWDC 2011の動画を詳細にparentContextについて話しています。

関連する問題