Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- // Models code
- struct Player: Decodable {
- var id: Int
- var name: String?
- }
- struct Game: Decodable {
- var name: String
- var playerId1: Int
- var playerId2: Int
- var player1: Player?
- var player2: Player?
- init(from decoder: Decoder, allPlayers: [Player]) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- name = try values.decode(String.self, forKey: .name)
- playerId1 = try values.decode(Int.self, forKey: .player1)
- playerId2 = try values.decode(Int.self, forKey: .player2)
- player1 = allPlayers.first{ $0.id == playerId1 }
- player2 = allPlayers.first{ $0.id == playerId2 }
- }
- }
- // ViewModel code
- let playersResponse = """
- [
- {
- "id": 1,
- "name": "John Doe"
- },
- {
- "id": 15,
- "name": "Jessica Thump"
- }
- ]
- """
- let gamesResponse = """
- [
- {
- "name": "Tic Tac Toe",
- "playerId1": 15,
- "playerId2": 1
- }
- ]
- """
- let players = try! JSONDecoder().decode([Player].self, from: playersResponse.data(using: .utf8)!)
- let games = try! JSONDecoder().decode([Game].self, from: gamesResponse.data(using: .utf8)!, allPlayers: players) // <-- DOES NOT WORK "Extra argument 'allPlayers' in call"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement