我无法找出问题所在,只是根据状态代码过滤掉响应,如下所示:
代码应该根据状态代码过滤掉响应并返回
response and data
作为可观察的。
您的方法几乎没有问题:
Observable.create
已经返回 URLSession.shared.rx.response
时,为什么还要使用 Observable
?flatMap
应该返回一个Observable
,但您不会从那里返回任何内容URLSession.shared.rx.data
可以为您进行 statusCode
检查.decode
运算符进行解码T
但被命名为 getUsers
的通用函数?Observable
内部Observable.create
所以你的反应链永远不会运行鉴于这些问题,您可以调整您的代码:
func getUsers<T: Codable>(urlStr: String) -> Observable<T> {
guard let url = URL(string: urlStr) else { return .empty() }
return URLSession.shared.rx.data(request: .init(url: url))
.decode(type: T.self, decoder: JSONDecoder())
}