创建的可观察对象不发出任何东西

问题描述 投票:0回答:1

我试图创建使用RxAlamofire返回Observable 的函数:

class APIManager {
    let disposeBag = DisposeBag()
    func getResponse(credentialData: Credentials, ulr: String)->Observable<(HTTPURLResponse, Any)>{
    let credentialData = "\(credentialData.username):\(credentialData.password)".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
    let base64Credentials = credentialData.base64EncodedString()
    let headers = ("Authorization", "Basic \(base64Credentials)")
    let header = HTTPHeaders.init(dictionaryLiteral: headers)
    return Observable.create{ observer in
        requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
        .subscribe(onNext: { response in
            observer.onNext(response)
            } ,


    onError: { error in
        observer.onError(error)
        },
    onCompleted: {},
    onDisposed: {}).disposed(by: self.disposeBag)
    return Disposables.create()
    }
}    

}

但是不执行onNext中的代码,它仅通过onDisposed。我该如何解决?

swift rx-swift
1个回答
0
投票

为什么当另一个函数已经返回了所需的Observable时,为什么将requestJSON函数与另一个Observable包装在一起,而该Observable仅转发相同的元素和错误?

这还不够吗?

class APIManager {
    func getResponse(credentialData: Credentials, ulr: String) -> Observable<(HTTPURLResponse, Any)> {
        let credentialData = "\(credentialData.username):\(credentialData.password)"
            .data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
        let base64Credentials = credentialData.base64EncodedString()
        let headers = ("Authorization", "Basic \(base64Credentials)")
        let header = HTTPHeaders.init(dictionaryLiteral: headers)
        return requestJSON(.get, ulr, parameters: nil, encoding: JSONEncoding.default, headers: header)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.