サーバーからいくつかの情報を同時にダウンロードしていますが、同じために NSOperatioQueue を使用しています。問題があります。たとえば、何らかの理由でダウンロード操作が失敗した場合、その操作をキューから削除したくありません。
現在、サーバーから応答が返されるとすぐに障害が発生した場合でも、操作はキューから削除されます。
特定の操作が論理的に終了しておらず、キューに保持する必要があることをキューに伝える方法はありますか?
私の場合、一連の情報をダウンロードしています。たとえば、郡内のすべての場所を取得してから、各郡のすべての家を取得します。そのため、ユーザーが有効なトークンでログインしていない場合、郡をダウンロードできない場合があります。その場合、サーバーは失敗メッセージを返します。ユーザーがアプリにログインしたときに再試行できるように、そのようなアイテムをキューに入れておきたいと思います。
サンプルコード
self.downloadQueue.maxConcurrentOperationCount = 1;
for(Campaign *campaign in campaigns)
{
isContentUpdated = false;
if(self.operation)
self.operation = Nil;
self.operation = [[DownloadOutlets alloc] initWithCampaign:campaign];
[self.downloadQueue addOperation:operation];
}
ここで、downloadQueue は NSOperationQueue であり、DownloadOutlets は NSOperation を拡張します。ありがとう