Home > database >  Filter Operator API response not working in RxSwift
Filter Operator API response not working in RxSwift

Time:05-25

I am not able to find out the what is the issue , just to filter out response based on status code as follow:

The code should be filter out the response based on the status code & return response & data as observable.

enter image description here

CodePudding user response:

There are few issues with your approach:

  • Why are you using Observable.create when you have URLSession.shared.rx.response that is already returning Observable?
  • Your last flatMap should return an Observable but you are not returning anything from there
  • There's URLSession.shared.rx.data that does the statusCode check for you
  • You can use .decode operator for decoding
  • Why it's a generic func that returns T but is named getUsers?
  • You are never subscribing to the inner Observable inside Observable.create so your reactive chain will never run

Given these issue you can adapt your code to:

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())
}
  • Related