Файл UserBean .h
@property (assign, readwrite) NSString *user;
@property (assign, readwrite) NSString *timestamp;
@property (assign, readwrite) NSString *password;
@property (assign, readwrite) NSString *source_id;
@property (assign, readwrite) NSString *fullname;
@property (assign, readwrite) NSString *email;
@property (assign, readwrite) NSString *reset_code;
- (void)encodeWithCoder:(NSCoder *)encoder;
- (id)initWithCoder:(NSCoder *)decoder;
Файл UserBean .m
- (void)encodeWithCoder:(NSCoder *)encoder {
//Encode properties, other class variables, etc
[encoder encodeObject:self.email forKey:@"email"];
[encoder encodeObject:self.user forKey:@"username"];
[encoder encodeObject:self.fullname forKey:@"fullname"];
[encoder encodeObject:self.password forKey:@"password"];
[encoder encodeObject:self.source_id forKey:@"id"];
[encoder encodeObject:self.timestamp forKey:@"timestamp"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if((self = [super init])) {
//decode properties, other class vars
self.email = [decoder decodeObjectForKey:@"email"];
self.user = [decoder decodeObjectForKey:@"username"];
self.fullname = [decoder decodeObjectForKey:@"fullname"];
self.password = [decoder decodeObjectForKey:@"password"];
self.source_id = [decoder decodeObjectForKey:@"id"];
self.timestamp = [decoder decodeObjectForKey:@"timestamp"];
}
return self;
}
Здесь я сохраняю и возвращаю объект класса userbean
- (UserBean *)getUser {
NSError *error;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedObject = [defaults objectForKey:@"user"];
if (@available(iOS 9.0, *)) {
UserBean *userBean = [NSKeyedUnarchiver unarchiveTopLevelObjectWithData:encodedObject error:&error];
return userBean;
} else {
UserBean *userBean = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
return userBean;
}
}
- (void)saveUser:(UserBean *)userBean {
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:userBean];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodedObject forKey:@"user"];
[defaults synchronize];
}
отсюда я устанавливаю атрибуты объекта и сохраняю
- (void)saveUser:(StandardPacket *)packet {
NSDictionary *dataDict = [packet.data objectAtIndex:0];
UserBean *userBean = [[UserBean alloc] init];
userBean.user = [NSString stringWithFormat:@"%@",[dataDict objectForKey:@"username"]];
userBean.email = [NSString stringWithFormat:@"%@",[dataDict objectForKey:@"email"]];
userBean.fullname = [NSString stringWithFormat:@"%@",[dataDict objectForKey:@"fullname"]];
userBean.password = [NSString stringWithFormat:@"%@",[dataDict objectForKey:@"password"]];
userBean.source_id = [NSString stringWithFormat:@"%@",[dataDict objectForKey:@"id"]];
userBean.timestamp = @"AA";
userBean.reset_code = @"AA";
[[SharedPrefences defaults] saveUser:userBean];
}
но когда я извлекаю объект из SharedPreferences, я получаю объект с нулевыми значениями и другим мусором
Тема 1: EXC_BAD_ACCESS (код = 1, адрес = 0xa17e4c52)
значения из объекта userbean после извлечения
пользователь UserBean * 0x17e604e0 _user NSString * 0x17ea9fe0
_timestamp NSString * 0x17ea7a50
_пароль NSString * 0x17e605c0
_source_id NSString * 0x17e679d0
_fullname NSString * 0x17ea9e50
_email NSString * 0x17e9a880
_reset_code NSString * ноль 0x00000000