2012-03-18 3 views
0

私はコアデータを使用するアプリケーションを持っており、値はインターネット上のリンクから取得されます。シリアルキューのiPhoneアプリケーションのコアデータを読み取る

これはAppDelegateでシリアルキューを作成しているときに問題なく動作していますが、これは問題ありません。

、私はのUITableViewControllerで再作成する同様のシナリオにしようとシリアルキューに同じことを実行するが、コントロールが到達したときに

NSError *error; 
NSArray *match = [context executeFetchRequest:fetchRequest error:&error]; 

実行制御が消えた後、このコードが実行中に残っています永遠まで。

ここで間違っているものは誰でも助けてくれますか?

FYI、私は同じManagedObjectContextをシリアルキューに渡しています。

答えて

0

最後の文はキーである可能性があります。ではなく、複数のスレッド/キューで使用するように設計されたです。詳しくは、concurrency section in the Core Data Programming Guideを参照してください。あなたのアプリがiOS 5+のみをサポートする必要がある場合は、new private queue contextが5.0で追加されたので、これを解決することができます(自分のシリアルキューの管理から抜け出すことができます)。そうでなければ、である必要があります。各スレッド/キューには独自のコンテキストがあり、安全な情報(管理対象オブジェクトIDなど)をあるコンテキストから別のコンテキストに渡すだけです。

+0

お寄せいただきありがとうございます。私は同じコンテキストを使用しましたが、別のブロックでプリフェッチと処理を行い、メインブロックにデータを再保存しました。私はこのプライベートキューを使用しようとしましたが、残念ながらそれを達成できませんでした。 – Kunjal

+0

WWDC 2011のiOSビデオのコアデータには、価値あるものがあります。https://developer.apple.com/videos/wwdc/2011/includes/whats-new-in-core-data -on-ios.html#whats-new-in-core-data-on-ios –

+0

@Otto:参考に感謝します。これはかなり役に立ちました。また、非同期モードでも動作するNSOperationとNSOperationQueueを使用しました。 – Kunjal

関連する問題