Я думаю, что вы не кодировали и не декодировали метод в своем классе сеанса. Если ваш сеанс является обычным классом, тогда вы должны написать следующие два метода, без этого архив не будет работать.
Код:
Objective C Версия:
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.session_property1 forKey:@"session_property1"];
[encoder encodeObject:self.session_property2 forKey:@"session_property2"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if((self = [super init])) {
//decode properties, other class vars
self.ession_property1 = [decoder decodeObjectForKey:@"ession_property1"];
self.ession_property2 = [decoder decodeObjectForKey:@"ession_property2"];
}
return self;
}
Здесь session_property1 и session_property2 рассматриваются как строки, если переменная отличается от строки вам нужно отформатировать его соответствующим образом.
После них в вашем пореза на классе, если вы будете использовать archiveData
метод, как вы это сделали, то он будет архивировать данные, а затем вы можете установить эти данные в NSUserDefault
Swift Версия:
required init(coder decoder: NSCoder) {
self.state = decoder.decodeObject(forKey: "state") as? String
self.country = decoder.decodeObject(forKey: "country") as? String
self.zip = decoder.decodeObject(forKey: "zip") as? String
self.locality = decoder.decodeObject(forKey: "locality") as? String
self.city = decoder.decodeObject(forKey: "city") as? String
self.latitude = decoder.decodeObject(forKey: "latitude") as? Double
self.longitude = decoder.decodeObject(forKey: "longitude") as? Double
}
func encode(with coder: NSCoder) {
coder.encode(state, forKey: "state")
coder.encode(country, forKey: "country")
coder.encode(zip, forKey: "zip")
coder.encode(locality, forKey: "locality")
coder.encode(city, forKey: "city")
coder.encode(latitude, forKey: "latitude")
coder.encode(longitude, forKey: "longitude")
}
Я надеюсь, что это вам поможет. Счастливого кодирование ...
Что такое 'session'? – Aaron
NSUserDefaults поддерживает следующие типы данных: NSString, NSNumber, NSDate, NSArray, NSDictionary и NSData http://stackoverflow.com/questions/37980432/swift-3-saving-and-retrieving-custom-object-from-userdefaults – Rivendell