1

Core データを可能な限り最適な方法でセットアップする方法を理解するのに苦労しています。現在、メイン スレッドで実行されている 1 つの ManagedObjectContext を含むコア データ スタックを含むシングルトンがあります。そして、多くの記事やチュートリアルを読んだ後、私は非常に混乱しました. シングルトンは問題ないという統計もあれば、シングルトンとメイン スレッド上の 1 つの managedObjectContext は悪い考えであるという統計もあります (これは正しいですか?)。では、複数のスレッドを使用してコア データ スタックを最も効率的に作成するにはどうすればよいでしょうか。

私のアプリは解析された大量の JSON データをコア データ モデルにダウンロードして処理しているため、これらのデータを MOC を使用してバックグラウンド スレッドにインポートし、メイン スレッドで MOC を使用してデータを表示することを考えています。それを行う方法は

マジカルレコードを使ってみたのですが、「ツール」という情報が少なく、JSONデータのインポート方法、重複回避方法、リレーションシップ作成方法等がイマイチわかりません。

事前に助けてくれてありがとう:)

4

3 に答える 3

1

2 つ作成することをお勧めしますNSManagedObjectContext。1 つはコア データから読み取り、ユーザー インターフェイスを更新するためのもので、もう 1 つはレコードをコア データに書き込むためのものです。メインスレッドとバックグラウンドスレッドの使用中の競合を回避します

于 2013-03-14T11:47:23.117 に答える
1

シングルトンはロックすればOKです。

2 つでも問題ありませんが、同じバッキング ストアを使用し、読み取りコンテキストから書き込みコンテキストの変更を観察してから、変更をマージする必要があります。

于 2013-03-14T13:11:54.563 に答える
1

コア データのシングル スレッド化またはマルチスレッド化の戦略は、アプリの設計目的とコア データに保持するデータの量 (および読み取り/書き込みの頻度) によって異なります。

バックグラウンド スレッドを使用してデータをインポートし、メイン スレッドで Core Data の読み取りを行うと機能します。スレッドごとに MOC があり、作成されたスレッドの各 MOC にのみアクセスするようにしてください。Core Data のマージ機能 ( などmergeChangesFromContextDidSaveNotification:) は非常に便利です。

この質問と受け入れられた回答のいくつかの有用な情報:

Core Data マルチスレッド アプリケーション

于 2013-03-14T13:07:51.650 に答える