Advertisement
Rudigus

Struct parruda

Jun 11th, 2020
785
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.46 KB | None | 0 0
  1. //
  2. //  Interaction.swift
  3. //  Elysis
  4. //
  5. //  Created by Rodrigo Matos Aguiar on 10/06/20.
  6. //  Copyright © 2020 Gilberto Magno. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10.  
  11. // The possible results from the Sentim API
  12. enum Polarity: String, Codable {
  13.     case positive
  14.     case neutral
  15.     case negative
  16. }
  17.  
  18. // The struct that will represent each interaction the player does.
  19. struct Interaction {
  20.     var playerAnswer: String
  21.     let answerPolarity: Polarity
  22.    
  23.     enum CodingKeys: String, CodingKey {
  24.         case playerAnswer
  25.         case result
  26.     }
  27.    
  28.     enum ResultKeys: String, CodingKey {
  29.         case answerPolarity = "type"
  30.     }
  31. }
  32.  
  33. extension Interaction: Decodable {
  34.     init(from decoder: Decoder) throws {
  35.         let values = try decoder.container(keyedBy: CodingKeys.self)
  36.         playerAnswer = try values.decodeIfPresent(String.self, forKey: .playerAnswer) ?? ""
  37.         let result = try values.nestedContainer(keyedBy: ResultKeys.self, forKey: .result)
  38.         answerPolarity = try result.decode(Polarity.self, forKey: .answerPolarity)
  39.     }
  40. }
  41.  
  42. extension Interaction: Encodable {
  43.     func encode(to encoder: Encoder) throws {
  44.         var container = encoder.container(keyedBy: CodingKeys.self)
  45.         try container.encode(playerAnswer, forKey: .playerAnswer)
  46.         var result = container.nestedContainer(keyedBy: ResultKeys.self, forKey: .result)
  47.         try result.encode(answerPolarity, forKey: .answerPolarity)
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement