RxSwift 和 Alamofire:alamofire 处理响应数据后无法订阅事件

RxSwift and Alamofire: can't subscribe events after alamofire handling response data

这是我的一些代码:

func toObservable() -> Observable<T> {
    return Observable.create {
        observer -> Disposable in
        let urlRequest = try? self.asURLRequest()

        Alamofire.request(urlRequest!)
            .responseObject{ (response: DataResponse<T>) in
                if response.result.isSuccess {
                    if let responseEntity = response.result.value {
                        if let _ = responseEntity.error {
                            observer.onError(ResponseError.generic)
                        } else {
                            observer.onNext(responseEntity)
                        }
                    } else {
                        // TODO
                    }
                } else {
                    // TODO
                }
        observer.onCompleted()

        }

        return Disposables.create()
    }
}

当我调用这个函数时:

toObservable().subscribe(onNext: {
            print("onNext")
            // ... use [=11=] parameter
        }, onError: {
            print("onError")
            // ... use [=11=] parameter
        }, onCompleted: { 
            print("onCompelete")
        }, onDisposed: nil)
    .addDisposableTo(DisposeBag())

就是打印不出任何东西。那么对此有什么想法吗?非常感谢!

(我使用了 AlamofireObjectMapper、RxSwift 框架)

同样的问题 但没有人回答。

尝试像这样保持对 disposbag 的强引用:

let disposeBag = DisposeBag()

func setupRx() {

  toObservable()
      .debug("Alamofire.request")
      .subscribe(onNext: {
          print("onNext")
        // ... use [=10=] parameter
      }, onError: {
          print("onError")
        // ... use [=10=] parameter
      }, onCompleted: { 
          print("onCompelete")
      }, onDisposed: nil)
  .addDisposableTo(disposeBag)

}

您可以使用 debug 运算符来查看发生了什么。

希望这可能有所帮助。

let disposeBag = DisposeBag()

addDisposable 已弃用..

func setupRx() {

  toObservable()
      .debug("Alamofire.request")
      .subscribe(onNext: {
          print("onNext")
        // ... use [=11=] parameter
      }, onError: {
          print("onError")
        // ... use [=11=] parameter
      }, onCompleted: { 
          print("onCompelete")
      }, onCompleted: {
        print("onCompelete")
        }).disposed(by: disposeBag)

}