Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Interaction.swift
- // Elysis
- //
- // Created by Rodrigo Matos Aguiar on 10/06/20.
- // Copyright © 2020 Gilberto Magno. All rights reserved.
- //
- import Foundation
- // The possible results from the Sentim API
- enum Polarity: String, Codable {
- case positive
- case neutral
- case negative
- }
- // The struct that will represent each interaction the player does.
- struct Interaction {
- var playerAnswer: String
- let answerPolarity: Polarity
- enum CodingKeys: String, CodingKey {
- case playerAnswer
- case result
- }
- enum ResultKeys: String, CodingKey {
- case answerPolarity = "type"
- }
- }
- extension Interaction: Decodable {
- init(from decoder: Decoder) throws {
- let values = try decoder.container(keyedBy: CodingKeys.self)
- playerAnswer = try values.decodeIfPresent(String.self, forKey: .playerAnswer) ?? ""
- let result = try values.nestedContainer(keyedBy: ResultKeys.self, forKey: .result)
- answerPolarity = try result.decode(Polarity.self, forKey: .answerPolarity)
- }
- }
- extension Interaction: Encodable {
- func encode(to encoder: Encoder) throws {
- var container = encoder.container(keyedBy: CodingKeys.self)
- try container.encode(playerAnswer, forKey: .playerAnswer)
- var result = container.nestedContainer(keyedBy: ResultKeys.self, forKey: .result)
- try result.encode(answerPolarity, forKey: .answerPolarity)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement