title: -[_SwiftValue encodeWithCoder:]: unrecognized selector sent to instance
body: <p>Getting error when trying to utilize NSCoder</p>
  
  <p><strong>Player.swift:</strong></p>
  
  <pre><code>class Player: NSObject, NSCoding {
  
      private var _playerName: String!
      private var _playerScore: Int!
      private var _playerColor: PlayerColor! //PlayerColor is an enum
  
      var playerName: String {
          get {
              return _playerName
          }
          set {
              _playerName = newValue
          }
      }
  
      var playerScore: Int {
          get {
              return _playerScore
          }
          set {
              _playerScore = newValue
          }
      }
  
      var playerColor: PlayerColor {
          get {
              return _playerColor
          }
          set {
              _playerColor = newValue
          }
      }
  
      init(playerName: String, playerScore: Int, playerColor: PlayerColor) {
  
          _playerName = playerName
          _playerScore = playerScore
          _playerColor = playerColor
      }
  
      required convenience init(coder aDecoder: NSCoder) {
          let name = aDecoder.decodeObject(forKey: "name") as! String
          let score = aDecoder.decodeInteger(forKey: "score")
          let color = aDecoder.decodeObject(forKey: "color") as! PlayerColor
          self.init(playerName: name, playerScore: score, playerColor: color)
      }
  
      func encode(with aCoder: NSCoder){
          aCoder.encode(playerName, forKey: "name")
          aCoder.encode(playerScore, forKey: "score")
          aCoder.encode(playerColor, forKey: "color")
      }
  
  }
  </code></pre>
  
  <p><strong>in PlayerStore.swift:</strong></p>
  
  <pre><code>// Storage Functions
  func savePlayers(){
      let encodedData = NSKeyedArchiver.archivedData(withRootObject: _playerArray) // _playerarray is a [Player] the very object I want to store/retrieve at will
      defaults.set(encodedData, forKey: playerKeyForDefaults) //defaults is just var NSUserDefaults.standard
      defaults.synchronize()
  }
  
  func loadPlayers(){
      if let decoded = defaults.object(forKey: playerKeyForDefaults) as? NSData {
          let array = NSKeyedUnarchiver.unarchiveObject(with: decoded as Data) as! [Player]
          _playerArray = array
      }
  
  }
  </code></pre>