2011-07-07 2 views
0

Core Dataを使用してアプリケーションを開発しており、Webサービスからすべてのデータを定期的にダウンロードしています。ダウンロードが失敗するか、ユーザーによってキャンセルされる可能性があるため、以前の状態に戻すことができます。私はNSManagedObjectContextを取り消そうとしましたが、それは少し遅いようでした(私は数万のエンティティを持っています)。私が今やっているのは、永続ストアファイルのバックアップを作成し、データをダウンロードし、ダウンロードに失敗した場合は、ストアファイルをバックアップに置き換えます。これは正しく動作しているようですが、店舗からエンティティを取得できたら遅れているようです。ダウンロード後にすぐにを使用するUITableViewに行くと、空であることがわかります。私が数秒待っても、すべてがOKです。コアNSPersistentStoreファイルを切り替えるときにデータの遅延が発生する

だから私の質問です:誰もこのような遅れを持っていますか?この問題を回避するために何かできることはありますか?たとえそれがスレッドをブロックしたとしても、すべてを準備するように強制するものはありますか?

+0

「キャンセル」ボタンをタップした後に復元に時間がかかり、エンティティが表示されないという問題がありました。 –

答えて

1

私はこの設定を使用していませんが、あなたが見ている遅延はおそらくコアデータがキャッシュしているものをすべてクリアしなければならないと思われます。コアデータが使用されます。フェッチされた結果コントローラでキャッシュを使用する場合は、既存のキャッシュをテストしてから削除する必要があります。

私はコアデータスタックを壊してゼロから再起動することをお勧めします。それには、新しくフェッチされた結果コントローラーを再作成することも含まれます。

+0

フェッチされた結果コントローラを再作成していますが、まだ遅延が発生しています。実際、取得された結果コントローラはcontextDidSave通知を受け取るので、ストアを変更すると管理対象オブジェクトは存在しないストアを指しています。 しかし、私は全体のスタック(ストアコーディネーター、モデル、管理されたコンテキスト)をリセットし、それがどうなるかを見てみましょう。 –

+0

もう一つの問題は、元の質問に答えることでした。 –

関連する問題