title: Crash while decoding with NSCoder
body: <p>I have two model classes for saving data, I am getting crash while decoding the data. </p>
  
  <p>The first class: </p>
  
  <pre><code>class User: NSObject,NSCoding, Mappable {
  
      var authenticationToken: String?
      var _id: String?
      var email: String?
      var profilePhoto: String?
      var country: String?
      var contactNo: String?
      var occupation: String?
      var aboutMe: String?
      var role: RollType?
      var createdAt: String?
      var isActive: Bool?
      var avg: Double?
      var review: Review?
      var subscribe: subscriptionType?
      var isPayment: Bool?
      var payment: Float?
      var invoiceURL: String?
      var firstName: String?
      var lastName: String?
      var password: String?
      var pesaPal : [pesaPalData]?
  
      required init?(map: Map) {
          super.init()
          mapping(map: map)
      }
  
      override init() {
          super.init()
      }
  
      required init(coder aDecoder: NSCoder) {
          super.init()
          authenticationToken = aDecoder.decodeObject(forKey: "token") as? String
          _id = aDecoder.decodeObject(forKey: "_id") as? String
          email = aDecoder.decodeObject(forKey: "email") as? String
          profilePhoto = aDecoder.decodeObject(forKey: "profilePhoto") as? String
          country = aDecoder.decodeObject(forKey: "country") as? String
          contactNo = aDecoder.decodeObject(forKey: "contactNo") as? String
          occupation = aDecoder.decodeObject(forKey: "occupation") as? String
          aboutMe = aDecoder.decodeObject(forKey: "aboutMe") as? String
          role = RollType(rawValue: (aDecoder.decodeObject(forKey: "role") as! String))
          createdAt = aDecoder.decodeObject(forKey: "createdAt") as? String
          isActive = aDecoder.decodeObject(forKey: "isActive") as? Bool
          subscribe = subscriptionType(rawValue: (aDecoder.decodeObject(forKey: "subscribe") as! String))
          invoiceURL = aDecoder.decodeObject(forKey: "invoiceURL") as? String
          isPayment = aDecoder.decodeObject(forKey: "isPayment") as? Bool
          payment = aDecoder.decodeObject(forKey: "payment") as? Float
          firstName = aDecoder.decodeObject(forKey: "firstName") as? String
          lastName = aDecoder.decodeObject(forKey: "lastName") as? String
          pesaPal = aDecoder.decodeObject(forKey: "pesaPal") as? [pesaPalData]
      }
  
      func encode(with aCoder: NSCoder) {
          aCoder.encode(authenticationToken, forKey: "token")
  
          aCoder.encode(_id, forKey: "_id")
          aCoder.encode(email, forKey: "email")
          aCoder.encode(profilePhoto, forKey: "profilePhoto")
          aCoder.encode(country, forKey: "country")
          aCoder.encode(contactNo, forKey: "contactNo")
          aCoder.encode(occupation, forKey: "occupation")
          aCoder.encode(aboutMe, forKey: "aboutMe")
          aCoder.encode(role?.rawValue, forKey: "role")
          aCoder.encode(createdAt, forKey: "createdAt")
          aCoder.encode(isActive, forKey: "isActive")
          aCoder.encode(subscribe?.rawValue, forKey: "subscribe")
          aCoder.encode(isPayment, forKey: "isPayment")
          aCoder.encode(payment, forKey: "payment")
          aCoder.encode(invoiceURL, forKey: "invoiceURL")
          aCoder.encode(firstName, forKey: "firstName")
          aCoder.encode(lastName, forKey: "lastName")
          aCoder.encode(pesaPal, forKey: "pesaPal")
      }
  
      func mapping(map: Map) {
          _id                     &lt;- map["_id"]
          email                   &lt;- map["email"]
          profilePhoto            &lt;- map["profilePhoto"]
          country                 &lt;- map["country"]
          contactNo               &lt;- map["contactNo"]
          occupation              &lt;- map["occupation"]
          aboutMe                 &lt;- map["aboutMe"]
          role                    &lt;- (map["role"],EnumTransform&lt;RollType&gt;())
          createdAt               &lt;- map["createdAt"]
          isActive                &lt;- map["isActive"]
          review                  &lt;- map["review"]
          avg                     &lt;- map["avg"]
          subscribe               &lt;- map["subscribe"]
          isPayment               &lt;- map["isPayment"]
          payment                 &lt;- map["payment"]
          invoiceURL              &lt;- map["invoiceURL"]
          firstName               &lt;- map["firstName"]
          lastName                &lt;- map["lastName"]
          password                &lt;- map["password"]
          pesaPal                 &lt;- map["pesapalDetails"]
      }
  }
  </code></pre>
  
  <p>The second class: </p>
  
  <pre><code>class pesaPalData: NSObject, Mappable , NSCoding{
  
      var payment1 : String?
      var pesapalStatus : String?
      var reference : String?
  
      required init?(coder aDecoder: NSCoder) {
          payment1 = aDecoder.value(forKey: "paymentPesa") as? String
          pesapalStatus = aDecoder.value(forKey: "pesapalStatus") as? String
          reference = aDecoder.value(forKey: "reference") as? String
      }
  
      required init?(map: Map) {
          super.init()
          self.mapping(map: map)
  
      }
  
      func encode(with aCoder: NSCoder) {
          aCoder.encode(payment1, forKey: "paymentPesa")
          aCoder.encode(pesapalStatus, forKey: "pesapalStatus")
          aCoder.encode(reference, forKey: "reference")
      }
  
      func mapping(map: Map) {
          payment1               &lt;- map["payment"]
          pesapalStatus          &lt;- map["pesapalStatus"]
          reference              &lt;- map["reference"]
      }
  
  
  }
  </code></pre>
  
  <p>I am getting crash while decoding from the pespalData class :</p>
  
  <blockquote>
    <p>*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]:
    this class is not key value coding-compliant for the key paymentPesa</p>
  </blockquote>
  
  <p>Help would be appreciated about what's causing the crash,</p>
  
  <p>Thanks</p>