以下是我的一些代码:
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,但没有人回答。
答案 0 :(得分:3)
尽量保持对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
运算符查看发生的情况。
希望这可能会有所帮助。
答案 1 :(得分:0)
let disposeBag = DisposeBag()
addDisposable已被弃用..
func setupRx() {
toObservable()
.debug("Alamofire.request")
.subscribe(onNext: {
print("onNext")
// ... use $0 parameter
}, onError: {
print("onError")
// ... use $0 parameter
}, onCompleted: {
print("onCompelete")
}, onCompleted: {
print("onCompelete")
}).disposed(by: disposeBag)
}