Вот некоторые из моих кодов:RxSwift и Alamofire: не могут подписаться события после того, как данные отклика обработки alamofire
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, но никто не ответил.
Спасибо так много. Я потратил часы на эту проблему. Это, если вы можете объяснить, почему это имеет смысл, не может быть лучше :) – wizChen
@wizChen Хорошо, задача будет продолжаться до тех пор, пока 'disposeBag' deinit, Если вы сохраните сильную ссылку на' disposbag', задача будет активирована. Таким образом, этот одиночный код '.addDisposableTo (DisposeBag())' немедленно отменит задачу. – beeth0ven
Так что это объясняет, еще раз спасибо! – wizChen