私はこの問題のクリーンな解決策を見つけるのに苦労してきましたが、正常に動作する複数の安らかな Web サービス要求を作成するアプリを作成しましたが、要求の一部でログインの詳細または API キーが期限切れになる可能性があり、できるようにする必要があります。これを処理し、ユーザーにログイン画面を再度表示します。
私の API クライアント クラスでは、正常に動作する次のことを行っていますが、アプリが複数の Web サービス リクエストを実行するため、UI AlertView が複数回表示されます。
このコード ブロックを、発生した最初のエラーに対して 1 回だけ実行し、アラート ビューを 1 つだけ表示する方法についてのアイデアはありますか?
AFJSONRequestOperation *operation = [[AFJSONRequestOperation alloc] initWithRequest:apiRequest];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
completionBlock(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSInteger statusCode = [operation.response statusCode];
if (statusCode == 401) {
[UIAlertView error:@"Your session has expied, please log in again."];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"Logout"
object:self];
} else {
completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}
}];