Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. public func mapObject<T: Decodable>(type: T.Type) -> Observable<T> {
  2. return flatMap { data -> Observable<T> in
  3. let (_, json) = (data as? (HTTPURLResponse, Any))!
  4. guard let jsonData = try? JSONSerialization.data(withJSONObject: json) else {
  5. throw NSError(
  6. domain: "",
  7. code: -1,
  8. userInfo: [NSLocalizedDescriptionKey: "Please validate JSON for \(String(describing: T.self)) struct"]
  9. )
  10. }
  11. guard let object = try? JSONDecoder().decode(T.self, from: jsonData) else {
  12. throw NSError(
  13. domain: "",
  14. code: -1,
  15. userInfo: [NSLocalizedDescriptionKey: "Failed to decode Codable struct \(String(describing: T.self))"]
  16. )
  17. }
  18. return Observable.just(object)
  19. }
  20. }
  21.  
  22. public func mapArray<T: Decodable>(type: T.Type) -> Observable<[T]> {
  23. return flatMap { data -> Observable<[T]> in
  24. let (_, json) = (data as? (HTTPURLResponse, Any))!
  25. guard let jsonData = try? JSONSerialization.data(withJSONObject: json) else {
  26. throw NSError(
  27. domain: "",
  28. code: -1,
  29. userInfo: [NSLocalizedDescriptionKey: "Please validate JSON for \(String(describing: T.self)) struct"]
  30. )
  31. }
  32. guard let objects = try? JSONDecoder().decode([T].self, from: jsonData) else {
  33. throw NSError(
  34. domain: "",
  35. code: -1,
  36. userInfo: [NSLocalizedDescriptionKey: "Failed to decode Codable struct \(String(describing: T.self))"]
  37. )
  38. }
  39. return Observable.just(objects)
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement