【问题标题】:[Result]: failure(Alamofire.AFError.explicitlyCancelled)[结果]:失败(Alamofire.AFError.explicitlyCancelled)
【发布时间】:2021-03-08 01:19:52
【问题描述】:

我正在与 alamofire 交流。 登录部分没有报错,但是注册部分出现这个错误,但是app没有关闭。 怎么做:(

class DarnerAPIClient {
    static let shared = DarnerAPIClient()
    
    func networkingResult<T: Codable>(from api: DarnerAPI) -> Observable<T> {
        return Observable.create { obs in
            let request = AF.request(URL(string: api.baseURL + api.path)!,
                                     method: api.method!,
                                     parameters: api.parameter,
                                     encoding: api.encoding,
                                     headers: api.header).responseData { response in
                                    debugPrint(response)
                switch response.result {
                case .success(let data):
                    do {
                        let dataToUse: T = try JSONDecoder().decode(T.self, from: data)
                        return obs.onNext(dataToUse)
                    } catch(let error) {
                        return obs.onError(error)
                    }
                case .failure(let error):
                    return obs.onError(error)
                }
            }
            return Disposables.create {
                request.cancel()
            }
        }
    }
}

【问题讨论】:

    标签: swift networking alamofire


    【解决方案1】:

    我遇到了同样的问题,花了一段时间才弄明白。

    一开始是这样的,但是不工作

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            let disposeBag = DisposeBag()
    
             repository
                .forgotPassword(email: "myemail@gmail.com")
                .observe(on: MainScheduler.instance)
                .subscribe(onSuccess: { (res) in
                    print(res)
                }, onFailure: { (error) in
                    print(error)
                }).disposed(by: disposeBag)
        }
    
    }
    

    然后我把它改成这个,它开始工作了。

    class ViewController: UIViewController {
    
        let disposeBag = DisposeBag()
    
        override func viewDidLoad() {
            super.viewDidLoad()
           
             repository
                .forgotPassword(email: "myemail@gmail.com")
                .observe(on: MainScheduler.instance)
                .subscribe(onSuccess: { (res) in
                    print(res)
                }, onFailure: { (error) in
                    print(error)
                }).disposed(by: disposeBag)
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      自我回答: 在我的网络代码中
      我没有处理 :(

      【讨论】:

        猜你喜欢
        • 2015-01-02
        • 2013-04-22
        • 2020-10-12
        • 2014-01-13
        • 2016-08-22
        • 2018-04-04
        • 1970-01-01
        • 2022-08-06
        • 2015-08-05
        相关资源
        最近更新 更多