0

RKObjectManager を使用してリモート リソースからオブジェクトを読み込み、tableView を使用してフェッチしたオブジェクトを表示します。tableView モデルの割り当てが解除されると、現在のすべてのリクエストをキャンセルします

[self.objectManager cancelAllObjectRequestOperationsWithMethod:RKRequestMethodGET matchingPathPattern:self.resourcePath];

ユーザーがビューをリロードすると、新しいモデルが作成されます。objectManager を最初から作成する代わりに、同じモデルを取得します (objectManager インスタンスを別の場所に保存します)。同じサービス/サイトに対してアプリ全体で単一のオブジェクト マネージャーを使用しようとしています - 同じ永続オブジェクト ストアに対して複数のオブジェクト マネージャーを使用できるかどうかわかりませんか? ただし、現在、リソース パスへのすべての要求は次のエラーで失敗します。

restkit.network:RKObjectRequestOperation.m:569 Object request failed: Underlying HTTP request operation failed with error: Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. (NSURLErrorDomain error -999.)"

objectManager のリソース パスに対してキャンセルすると、後で新しいリクエストを介してそのリソースをリロードできないようです。現在のリクエストをキャンセルして後でリロードするベスト プラクティスは何ですか? 以前のデリゲート バージョンの restkit では、モデル/ビューをデリゲートとしてオブジェクト マネージャーから削除しないと、アプリがクラッシュしていました。新しいブロックの操作方法でも、このような問題を回避するには、リクエストをキャンセルする必要があると思いますか? ポインタ/アドバイスは大歓迎です。ありがとう

よろしく

ジョージ MP

4

1 に答える 1

0

複数のオブジェクト マネージャーを同じ永続オブジェクト ストアに対して使用できるかどうかわからない場合は、

それで問題ありません。

ユーザーがビューをリロードすると、新しいモデルが作成されます - objectManager を最初から作成する代わりに、同じモデルをフェッチします...

新しいモデルを作成する場合 (マネージド オブジェクト ストアのことだと思いますか?)、それに合わせて新しいオブジェクト マネージャーを作成する必要があります。理論的には、古いオブジェクト マネージャーに新しいストアを与えることができますが、無効化される可能性のある内部キャッシュが多数あります (または存在する可能性があります)。

キャンセルして後でリロードしても問題ないはずです。問題は、その間にオブジェクトストアを使用して何をしているのかです...

于 2013-05-27T13:45:44.513 に答える