gpt4 book ai didi

ios - 无法在网络调用中返回可观察到的 customError

转载 作者:行者123 更新时间:2023-11-28 07:38:43 26 4
gpt4 key购买 nike

我想使用 catchError 将我的错误返回为自定义类型。起初,我希望我的网络层返回 Observable,然后在 ViewModel 中我为它订阅了 .OnNext、.OnError、.OnCompleted 事件,但我不知道我应该如何处理诸如 4xx、5xx 网络状态代码之类的错误,然后,他们返回我的自定义错误对象!

我的登录 View 模型:

func getAccessToken() {        
let network = NetworkRequest()

network.logInRequest(tokenType: .guest, token: "cce577f6021608", secondKey: "09128147040", client: "cce577f6021608bc31424d209cbf5120c3683191").subscribe(onNext: { loginData in
self.token.onNext(loginData.access_token)
}, onError: { error in
print("The Error is: \(error.localizedDescription)")
}, onCompleted: {
print("Its Completed")
}).disposed(by: bag)
}

我的网络层函数:

class NetworkRequest: NSObject {
var rxProvider: MoyaProvider<WebServiceAPIs>

override init() {
rxProvider = MoyaProvider<WebServiceAPIs>( plugins: [ NetworkLoggerPlugin(verbose:true) ])
}

func logInRequest(tokenType: accessTokenTypeEnum, token: String, secondKey: String, client: String) -> Observable<LoginModel> {
return rxProvider.rx
.request(WebServiceAPIs.getAccessToken(tokenType: tokenType.rawValue, token: token, secondKey: secondKey, client: client))
.filterSuccessfulStatusCodes()
.catchError({ error -> Observable<NetworkError> in
return //Observable.just() => I want to return a custom network error as obserable
})
.map(LoginModel.self, atKeyPath: nil, using: JSONDecoder(), failsOnEmptyData: true).asObservable()
}

}

谢谢你的帮助

最佳答案

根据我的经验,“.materialize()”运算符是处理 HTTP 错误的完美解决方案。您得到的不是成功和错误的单独事件,而是一个单独的包装器事件,其中嵌套了成功或错误。

关于ios - 无法在网络调用中返回可观察到的 customError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815543/

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