1

I have a class Users. And I use NSKeyedArchiver add this in NSUserDefaults, but this does not work.

This is my code:

let encodedData = NSKeyedArchiver.archivedData(withRootObject: self.user) as Data
self.prefs.setValue(encodedData, forKey: "user")

Error: libc++abi.dylib: terminating with uncaught exception of type NSException

And this is my class Users

class Users : NSObject, NSCoding  {
var token : String?
var username : String?
var phone : String?
var email: String?
var date : Date?
var language : String?
var age : Int?
override init() {

}

init(token : String, username : String, phone : String, email: String, date : Date, language : String, age : Int) {
    self.token = token
    self.username = username
    self.phone = phone
    self.email = email
    self.date = date
    self.language = language
    self.age = age

}


required init(coder aDecoder: NSCoder) {
    self.token = aDecoder.decodeObject(forKey: "token") as? String
    self.username = aDecoder.decodeObject(forKey: "username") as? String
    self.phone = aDecoder.decodeObject(forKey: "phone") as? String
    self.email = aDecoder.decodeObject(forKey: "email") as? String
    self.date = aDecoder.decodeObject(forKey: "date") as? Date
    self.language = aDecoder.decodeObject(forKey: "language") as? String
    self.age = aDecoder.decodeInteger(forKey: "age")
}



func encode(with aCoder: NSCoder) {
    aCoder.encode(token, forKey:"token")
    aCoder.encode(username, forKey:"username")
    aCoder.encode(phone, forKey:"phone")
    aCoder.encode(date, forKey:"date")
    aCoder.encode(language, forKey:"language")
    aCoder.encode(age, forKey:"age")

}
}
kfb
  • 6,252
  • 6
  • 40
  • 51
Humyl
  • 143
  • 2
  • 9
  • Delete the application and re-install. This happens because a new property is added later on in your `Data` class. – pkc456 Nov 03 '16 at 09:50

0 Answers0