AFNetworkReachabilityManager 这个类是AFN专门用来监听网络状态的,而且是实时监听,只要网络状态发生变化,会立马知道.
所以在需要实时刷新的界面调用一下监听的方法.
// ResultsViewController.m
@property (nonatomic, assign) BOOL isRequestFinish;//数据请求是否完毕
- (void)viewDidLoad {
[super viewDidLoad];
_isRequestFinish = NO;//刚进入界面是没有完成请求数据的
//监听网络状态
[self AFNReachability];
//请求数据,这里就不用请求数据了
// [self requsetData];
}
//监听网络状态
-(void)AFNReachability {
//1.创建网络监听管理者
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
//2.监听网络状态的改变
/*
AFNetworkReachabilityStatusUnknown = 未知
AFNetworkReachabilityStatusNotReachable = 没有网络
AFNetworkReachabilityStatusReachableViaWWAN = 3G
AFNetworkReachabilityStatusReachableViaWiFi = WIFI
*/
if (!_isRequestFinish) {
//如果没有请求完成就检测网络
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知网络");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"没有网络");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"3G网络");//不是WiFi的网络都会识别成3G网络.比如2G/3G/4G网络
[self requsetData];
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WIFI网络");
[self requsetData];
break;
default:
break;
}}];
}
//3.开始监听
[manager startMonitoring];
}
//请求数据
- (void)requsetData {
[self.dataArray removeAllObjects];
[self.listTableView reloadData];
//加载菊花
MBProgressHUD *myHUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
myHUD.labelText = @"奋力加载中...";
[myHUD show:YES];
PhoneModel *colorModel = [self.searchModelArray lastObject];
NSString *IDStr = colorModel.ID;
KMyLog(@"网址:%@", urlStr);
[NewNetWorkManager requestGETWithURLString:urlStr parDic:nil finish:^(id responseObject) {
//请求完成
_isRequestFinish = YES;
NSArray *responese = (NSArray *)responseObject;
for (NSDictionary *dic in responese) {
ResultModel *model = [[ResultModel alloc] init];
[model setValuesForKeysWithDictionary:dic];
[self.dataArray addObject:model];
}
[self.dataArray sortUsingSelector:@selector(compareModel:)];
[self.listTableView reloadData];
if (self.dataArray.count == 0) {
//没有数据
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"目前该机型没有数据" message:@"" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];
[alertView show];
}
} conError:^(NSError *error) {
NSLog(@"请求失败了:%@", error);
//请求失败
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"网络不给力" message:@"请刷新" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];
[alertView show];
}];
[myHUD hide:YES afterDelay:0];
}