• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift中利用系统线程实现异步加载数据同步更新UI

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

// Mark: -数据源更新

    typealias AddDataBlock = () ->Void

    var updataBlock:AddDataBlock?

 

func loadLiveData(){

        let grpup = DispatchGroup()

        grpup.enter()

        //        //首页直播接口请求

        HomeLiveProvider.request(.liveList) { result in

            if case let .success(response) = result {

                //解析数据

                let data = try? response.mapJSON()

                let json = JSON(data!)

                if let mappedObject = JSONDeserializer<HomeLiveModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例

                    self.lives = mappedObject.data?.lives

                    self.categoryVoList = mappedObject.data?.categoryVoList

//                    self.collectionView.reloadData()

                    // 更新tableView数据

//                    self.updataBlock?()

                    grpup.leave()

                }

            }

        }

        

        grpup.enter()

        //        //首页直播滚动图接口请求

        HomeLiveProvider.request(.liveBannerList) { result in

            if case let .success(response) = result {

                //解析数据

                let data = try? response.mapJSON()

                let json = JSON(data!)

                if let mappedObject = JSONDeserializer<HomeLiveBanerModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例

                    self.homeLiveBanerList = mappedObject.data

                    //                    let index: IndexPath = IndexPath.init(row: 0, section: 1)

                    //                    self.collectionView.reloadItems(at: [index])

                    // 更新tableView数据

//                    self.updataBlock?()

                    grpup.leave()

                }

            }

        }

        

        

        

        grpup.enter()

        //        //首页直播排行榜接口请求

        HomeLiveProvider.request(.liveRankList) { result in

            if case let .success(response) = result {

                //解析数据

                let data = try? response.mapJSON()

                let json = JSON(data!)

                if let mappedObject = JSONDeserializer<HomeLiveRankModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例

                    self.multidimensionalRankVos = mappedObject.data?.multidimensionalRankVos

                    //                    let index: IndexPath = IndexPath.init(row: 0, section: 2)

                    //                    self.collectionView.reloadItems(at: [index])

                    // 更新tableView数据

//                    self.updataBlock?()

                    grpup.leave()

                }

            }

        }

        

        grpup.notify(queue: DispatchQueue.main) {

            self.updataBlock?()

        }

    }

 

oc中的使用样式

 

//一个并发队列

    dispatch_queue_t queueE = dispatch_queue_create("group.queue", DISPATCH_QUEUE_CONCURRENT);

    

    //一个线程组

    dispatch_group_t groupE = dispatch_group_create();

    ////1.请求轮播图的数据

    dispatch_group_async(groupE, queueE, ^{

        dispatch_group_enter(groupE);

        dispatch_async(dispatch_get_global_queue(0, 0), ^{

            

            [self requestCarousel:^{

                dispatch_group_leave(groupE);

            }];

        });

        

    });

    ////2.请求新闻轮播图的数据

    dispatch_group_async(groupE, queueE, ^{

        

        dispatch_group_enter(groupE);

        dispatch_async(dispatch_get_global_queue(0, 0), ^{

            

            [self requestNews:^{

                dispatch_group_leave(groupE);

            }];

        });

        

    });

    ////3.校园活动【师生展评】

    dispatch_group_async(groupE, queueE, ^{

        

        dispatch_group_enter(groupE);

        dispatch_async(dispatch_get_global_queue(0, 0), ^{

            

            //3.校园活动【师生展评】

            [self requestCampAcitivetis:^{

                dispatch_group_leave(groupE);

            }];

            

        });

        

    });

    

    ////4.尾部视图

    dispatch_group_async(groupE, queueE, ^{

        

        dispatch_group_enter(groupE);

        dispatch_async(dispatch_get_global_queue(0, 0), ^{

            

            //3.尾部视图

            [self requestClass:^{

                dispatch_group_leave(groupE);

            }];

            

        });

        

    });

    dispatch_group_notify(groupE, dispatch_get_main_queue(), ^{

        //staticWeakSelf 随情况而定

        [staticWeakSelf setUpUI];

        

    });

 

 

//1.请求轮播图的数据

- (void)requestCarousel:(void(^)(void))leveBlock{

  

 [AFHTTPRequestManager reqesutSuccess{

    

  

  if (leveBlock) {

            leveBlock();

        }

  } requestFaliure{

    

  if (leveBlock) {

            leveBlock();

        }

  }

}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap