我一直在努力为这个问题找到一个干净的解决方案,我已经创建了一个应用程序,它可以发出多个安静的 Web 服务请求,这些请求工作正常,但是请求的一部分登录详细信息或 API 密钥可能会过期,我需要能够处理这个并再次向用户显示登录屏幕。
在我的 API 客户端类中,我正在执行以下操作,但由于应用程序执行多个 Web 服务请求,我多次看到 UI AlertView。
关于如何使此代码块仅针对发生的第一个错误运行一次并且仅显示一个警报视图的任何想法?
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"]);
}
}];