gpt4 book ai didi

swift - RxSwift 和 Alamofire : can't subscribe events after alamofire handling response data

转载 作者:搜寻专家 更新时间:2023-11-01 06:36:07 25 4
gpt4 key购买 nike

这是我的一些代码:

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 $0 parameter
}, onError: {
print("onError")
// ... use $0 parameter
}, onCompleted: {
print("onCompelete")
}, onDisposed: nil)
.addDisposableTo(DisposeBag())

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

(我使用了 AlamofireObjectMapper、RxSwift 框架)

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

最佳答案

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

let disposeBag = DisposeBag()

func setupRx() {

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

}

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

希望这可能有所帮助。

关于swift - RxSwift 和 Alamofire : can't subscribe events after alamofire handling response data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com