NSUserDefaults写入和读取自定义 用户信息类
来源:互联网 发布:关系数据库管理系统 编辑:程序博客网 时间:2024/06/19 06:08
NSUserDefaults写入和读取自定义类
转载请注明:http://blog.csdn.net/l863784757/article/details/45538599
NSUserDefaults可以存取一些短小的信息,例如:NSString, NSNumber, NSDate, NSArray, NSDictionary.
//存NSString *string = [NSString stringWithString @“test"];NSUserDefaults *userD = [NSUserDefaults standardUserDefaults];[userD setObject:string forKey:@“testKey"];//取NSString *value;value = [userD objectForKey:@“testKey”];
但是如果想存一个自定义的NSObject对象,可以让这个自定义类实现<NSCoding>协议中的- (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法(obj-c的协议protocol就是java的接口interface,就是C++的纯虚函数),然后把该自定义的类对象编码到NSData中,再从NSUserDefaults中进行读取。
例如我们常用的用来存用户登录信息的类
UserModel.h文件
#import <Foundation/Foundation.h>@interface UserModel : NSObject<NSCoding>@property(nonatomic, strong) NSNumber *score;@property(nonatomic, strong) NSNumber *level;@property(nonatomic, strong) NSString *name;@property(nonatomic, strong) NSString *avatar;@property(nonatomic, strong) NSNumber *com;@property(nonatomic, strong) NSNumber *mes;@end
UserModel.m文件
#import "UserModel.h"#define EC_USER_score @"EC_USER_score"#define EC_USER_level @"EC_USER_level"#define EC_USER_name @"EC_USER_name"#define EC_USER_avatar @"EC_USER_avatar"#define EC_USER_com @"EC_USER_com"#define EC_USER_mes @"EC_USER_mes"@implementation UserModel-(void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.score forKey:EC_USER_score]; [aCoder encodeObject:self.level forKey:EC_USER_level]; [aCoder encodeObject:self.name forKey:EC_USER_name]; [aCoder encodeObject:self.avatar forKey:EC_USER_avatar]; [aCoder encodeObject:self.com forKey:EC_USER_com]; [aCoder encodeObject:self.mes forKey:EC_USER_mes];}-(id)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { if (aDecoder == nil) { return self; } self.score = [aDecoder decodeObjectForKey:EC_USER_score]; self.level = [aDecoder decodeObjectForKey:EC_USER_level]; self.name = [aDecoder decodeObjectForKey:EC_USER_name]; self.avatar = [aDecoder decodeObjectForKey:EC_USER_avatar]; self.com = [aDecoder decodeObjectForKey:EC_USER_com]; self.mes = [aDecoder decodeObjectForKey:EC_USER_mes]; } return self;}@end
存取:
//[self getUserModel:responseObject]这个返回的是一个UserModel对象,里面已保存数据
UserModel *user = [selfgetUserModel:responseObject];
//存
NSData *archiveCarPriceData = [NSKeyedArchiverarchivedDataWithRootObject:user];
[[NSUserDefaultsstandardUserDefaults]setObject:archiveCarPriceDataforKey:@“UD_USER"];
//取
UserModel *user1 = [[UserModel alloc] init];
NSData *myEncodedObject = [[NSUserDefaultsstandardUserDefaults]objectForKey:UD_USER];
user1 = [NSKeyedUnarchiverunarchiveObjectWithData: myEncodedObject];
- NSUserDefaults写入和读取自定义 用户信息类
- NSUserDefaults写入和读取自定义 用户信息类
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对…
- NSUserDefaults写入和读取自定义的对象
- NSUserDefaults读取和写入自定义对象
- NSUserDefaults读取和写入自定义对象
- C语言获取windows系统的相关信息
- Android MediaProvider--文件管理:必现,文件管理器中新建几个文件夹,批量删除后,连接电脑查看仍有部分文件夹未删除
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通) .
- 东软金沙笔试题目
- Android 自定义View-实现手写板
- NSUserDefaults写入和读取自定义 用户信息类
- MySQL中where条件的执行分析
- Ubuntu 14.04下安装/升级gcc 5.1.0
- 使用 GitHub, Jekyll 打造自己的免费独立博客
- firebug助力解除jquery.hide()失效问题
- java生成指定长度的随机字符串
- 求最小割边集
- 怎样k^N的最高位
- hbase api