2011-12-23 10 views
0

コアデータモデルにリンクされたNSArrayControllerのサブクラスがあります。いずれかの方法でIは、バックグラウンドでコアデータオブジェクトのトンをインポートバックグラウンド操作の完了後にNSArrayControllerをフェッチする

[self performSelectorInBackground:@selector(someLongExpensiveOperation:) withObject:obj]; 

を呼び出します。

インポート操作が完了した後、インターフェイスにフェッチボタンを手動で追加してクリックしない限り、アレイコントローラは新しいデータモデルを反映するように更新されません。アレイコントローラーを強制的に更新する方法に関するアイデアはありますか?

EDIT:

はNSManagedObjectContextは、スレッドセーフであることが仮定されていないとして、私はまた、いくつかの同時実行の問題を持っていたが判明します。それについても説明しなければなりませんでした。

答えて

1

someLongExpensiveOperation:メソッドの最後にprepareContentを呼び出します。

+0

メインスレッドでもそうするのは良い考えです。 –

+0

確かめてください。背景に新しいオブジェクトを挿入している間も、NSManagedObjectContextをロックしてロックを解除することを確認してください。 – lbrndnr

+0

NSArrayControllerのfetch:メソッドをsomeLongExpensiveOperation:の最後に呼び出してみましたが、何も役に立たず、手動でボタンを押してもaction = fetch:はまだ必要でした。とにかくfetch:とprepareContentの違いは何ですか? – Tony

関連する問題