Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.31 KB | None | 0 0
  1. import UIKit
  2.  
  3. // Models code
  4. struct Player: Decodable {
  5.     var id: Int
  6.     var name: String?
  7. }
  8.  
  9. struct Game: Decodable {
  10.     var name: String
  11.     var playerId1: Int
  12.     var playerId2: Int
  13.     var player1: Player?
  14.     var player2: Player?
  15.    
  16.     init(from decoder: Decoder, allPlayers: [Player]) throws {
  17.         let values = try decoder.container(keyedBy: CodingKeys.self)
  18.        
  19.         name = try values.decode(String.self, forKey: .name)
  20.        
  21.         playerId1 = try values.decode(Int.self, forKey: .player1)
  22.         playerId2 = try values.decode(Int.self, forKey: .player2)
  23.        
  24.         player1 = allPlayers.first{ $0.id == playerId1 }
  25.         player2 = allPlayers.first{ $0.id == playerId2 }
  26.     }
  27. }
  28.  
  29.  
  30. // ViewModel code
  31. let playersResponse = """
  32. [
  33.    {
  34.        "id": 1,
  35.        "name": "John Doe"
  36.    },
  37.    {
  38.        "id": 15,
  39.        "name": "Jessica Thump"
  40.    }
  41. ]
  42. """
  43.  
  44. let gamesResponse = """
  45. [
  46.    {
  47.        "name": "Tic Tac Toe",
  48.        "playerId1": 15,
  49.        "playerId2": 1
  50.    }
  51. ]
  52. """
  53.  
  54. let players = try! JSONDecoder().decode([Player].self, from: playersResponse.data(using: .utf8)!)
  55. let games = try! JSONDecoder().decode([Game].self, from: gamesResponse.data(using: .utf8)!, allPlayers: players)  // <-- DOES NOT WORK "Extra argument 'allPlayers' in call"
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement