#pragma mark -获取网络数据
- (void)loadNetData{
self.group = dispatch_group_create();
dispatch_queue_t queue = dispatch_queue_create("com.wg.group", DISPATCH_QUEUE_SERIAL);
dispatch_group_enter(_group);
dispatch_group_async(_group, queue, ^{
//网络请求 1111
[self getStatementCount];
});
dispatch_group_enter(_group);
dispatch_group_async(_group, queue, ^{
//网络请求 2222
WS(weakSelf);
[self getHospitalApplyList:^(BOOL isSuccess) {
//成功与否,都继续
dispatch_group_leave(weakSelf.group);
}];
});
dispatch_group_notify(_group, queue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
//刷新UI
});
});
}
这里的网络请求函数,我写两种方案,可根据需求选择
一、不需要回调,这种请求方式,需要在请求结束后,不管成功或者失败,都需要添加dispatch_group_leave(group);
//网络请求 1111
- (void)getStatementCount{
NSDictionary *parm = @{
@"platformId":@(2)
};
NSString *funItem = HuDataReport_quarterlyStatementCount;
WS(weakSelf);
[Request requestGET:parm view:weakSelf.view urlPre:dataReportCollectionURL funItem:funItem success:^(NSDictionary *dic) {
//这里需要添加下面代码
dispatch_group_leave(weakSelf.group);
} error:^(NSDictionary *dic) {
//这里需要添加下面代码
dispatch_group_leave(weakSelf.group);
} failure:^{
//这里需要添加下面代码
dispatch_group_leave(weakSelf.group);
}];
}
二、有时候需要回调
例如下拉刷新某一部分数据的时候,不需要请求全部的后台接口,只要单独调一个接口函数就行了,但是如果你把dispatch_group_leave(group);写到了函数里面,就会有问题,因为你在刷新之前没有dispatch_group_enter(_group);
可使用
//网络请求 2222
- (void)getHospitalApplyList:(void(^)(BOOL isSuccess))block{
NSDictionary *parm = @{
@"platformId":@(2),
};
NSString *funItem = HuDataReport_hospital_list;
WS(weakSelf);
[Request requestGET:parm view:weakSelf.view urlPre:dataReportCollectionURL funItem:funItem success:^(NSDictionary *dic) {
if (block) {
block(YES);
}
} error:^(NSDictionary *dic) {
if (block) {
block(NO);
}
} failure:^{
if (block) {
block(NO);
}
}];
}
这样的时候,在同一调接口时
dispatch_group_enter(_group);
dispatch_group_async(_group, queue, ^{
//查询平台下申请的医院列表
WS(weakSelf);
[self getHospitalApplyList:^(BOOL isSuccess) {
//成功与否,都继续
dispatch_group_leave(weakSelf.group);
}];
});
在下拉刷新时
_tableView.mj_footer=[MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
self.pageNum ++;
WS(weakSelf);
[self getHospitalApplyList:^(BOOL isSuccess) {
[weakSelf.tableView.mj_footer endRefreshing];
[weakSelf.tableView reloadSections:[NSIndexSet indexSetWithIndex:2] withRowAnimation:UITableViewRowAnimationAutomatic];
}];
}];
网友评论