RxSwift和Moya:实施“从上到下刷新”

时间:2018-07-20 10:07:35

标签: ios uitableview swift4 rx-swift moya

我正在尝试为我的tableView添加一次拉动以刷新动作,但是当我从API中获取数据时,tableView会冻结……

在这里,代码简化了:

// ViewController
private let refreshControl = UIRefreshControl()

tableView.refreshControl = refreshControl
refreshControl.addTarget(self, action: #selector(fetchData(_:)), for: .valueChanged)

private func fetchData() {
    self.viewModel.fetchData {
        DispatchQueue.main.async {
            self.tableView.reloadData()
            self.refreshControl.endRefreshing()
        }
    }
}

// ViewModel
func fetchData(completion: (() -> Void)?) {
    provider.request(.fetchData))
        .map({ $0.fetchData() })
        .subscribe(onNext: { result in
            switch result {
            case .success:
                completion?()
            case .failure(let error):
                print("=> error", error)
                completion?()
            }
        }, onError: {
            completion?()
        })
        .disposed(by: self.disposeBag)
}

我不太了解,因为对于我来说,Moya会进行异步通话。你知道我在做什么错吗?

谢谢

0 个答案:

没有答案