Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- let playersResponse = """
- [
- {
- "id": 1,
- "name": "John Doe"
- },
- {
- "id": 15,
- "name": "Jessica Thump"
- }
- ]
- """
- struct Player: Decodable {
- var id: Int
- var name: String?
- }
- let players = try! JSONDecoder().decode([Player].self, from: playersResponse.data(using: .utf8)!)
- let gamesResponse = """
- [
- {
- "name": "Tic Tac Toe",
- "playerId1": 15,
- "playerId2": 1
- }
- ]
- """
- struct Game: Decodable {
- var name: String
- var player1: Player
- var player2: Player
- enum CodingKeys: String, CodingKey {
- case name
- case player1 = "playerId1"
- case player2 = "playerId2"
- }
- }
- extension Game {
- init(from decoder: Decoder) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- name = try values.decode(String.self, forKey: .name)
- // HOW SHOULD I RETRIEVE THE PLAYER'S NAME GIVEN THEIR ID HERE?
- // |
- // |
- // V
- player1 = Player(id: try values.decode(Int.self, forKey: .player1), name: nil)
- player2 = Player(id: try values.decode(Int.self, forKey: .player2), name: nil)
- }
- }
- let games = try! JSONDecoder().decode([Game].self, from: gamesResponse.data(using: .utf8)!)
- dump(games[0].player1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement