Advertisement
Guest User

Untitled

a guest
Nov 1st, 2020
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.60 KB | None | 0 0
  1. import UIKit
  2.  
  3. let playersResponse = """
  4. [
  5.    {
  6.        "id": 1,
  7.        "name": "John Doe"
  8.    },
  9.    {
  10.        "id": 15,
  11.        "name": "Jessica Thump"
  12.    }
  13. ]
  14. """
  15.  
  16. struct Player: Decodable {
  17.     var id: Int
  18.     var name: String?
  19. }
  20.  
  21. let players = try! JSONDecoder().decode([Player].self, from: playersResponse.data(using: .utf8)!)
  22.  
  23. let gamesResponse = """
  24. [
  25.    {
  26.        "name": "Tic Tac Toe",
  27.        "playerId1": 15,
  28.        "playerId2": 1
  29.    }
  30. ]
  31. """
  32.  
  33. struct Game: Decodable {
  34.     var name: String
  35.     var player1: Player
  36.     var player2: Player
  37.    
  38.     enum CodingKeys: String, CodingKey {
  39.         case name
  40.         case player1 = "playerId1"
  41.         case player2 = "playerId2"
  42.     }
  43. }
  44.  
  45. extension Game {
  46.    
  47.     init(from decoder: Decoder) throws {
  48.         let values = try decoder.container(keyedBy: CodingKeys.self)
  49.        
  50.         name = try values.decode(String.self, forKey: .name)
  51.        
  52.         //                                             HOW SHOULD I RETRIEVE THE PLAYER'S NAME GIVEN THEIR ID HERE?
  53.         //                                                                         |
  54.         //                                                                         |
  55.         //                                                                         V
  56.         player1 = Player(id: try values.decode(Int.self, forKey: .player1), name: nil)
  57.         player2 = Player(id: try values.decode(Int.self, forKey: .player2), name: nil)
  58.     }
  59. }
  60.  
  61. let games = try! JSONDecoder().decode([Game].self, from: gamesResponse.data(using: .utf8)!)
  62. dump(games[0].player1)
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement