NSUserDefault 保存自定义对象
2024-09-03 00:09:49
由于NSUserDefaults 不支持保存自定类,保存的对象需要实现NSCoding协议,不过自定的类型就算实现了NSCoding也不可以保存,可以通过以下方法实现:
//h文件
#import <Foundation/Foundation.h> @interface People : NSObject<NSCoding> @property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *age; @end //m文件 #import "People.h" @implementation People - (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeObject:_age forKey:@"age"]; }
- (id)initWithCoder:(NSCoder *)aDecoder{
_name= [aDecoder decodeObjectForKey:@"name"] ;
_age= [aDecoder decodeIntegerForKey:@"age"];
return self;
}
@end
通过实现
NSKeyedArchiver转换成NSData然后保存到NSUserDefaults中,然后取值的时候可以通过NSKeyedUnarchiver读NSData获得对应的user,代码如下:
NSUserDefaults *userDefault= [NSUserDefaults standardUserDefaults];
People *p = [[People alloc]init];
p.name = @"张飞";
p.age = @"";
//将对象转化为字节流
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: p]; [userDefault setObject:data forKey:@"user"];
//同步
[nsuser synchronize]; //获取
NSData *getdata =[nsuser objectForKey:@"user"];
//解码
People *getP = [NSKeyedUnarchiver unarchiveObjectWithData:getdata]; NSLog(@"%@",getP.name);
最新文章
- HTML 学习笔记 JQuery(DOM 操作2)
- UNIX:高级环境编程 - 第十五章 IPC:进程间通信
- hdu 1203
- C语言输入多组问题~ungetc回退字符到stdin
- 点击a标签,跳转到iframe中,并在iframe中显示指定的页面
- 167. Two Sum II - Input array is sorted
- 字符串(后缀自动机):Ahoi2013 差异
- Codeforces 518D Ilya and Escalator
- WS Security 认证方式详解
- bzoj3211花神游历各国 线段树
- hadoop用户写入文件权限不够的问题
- 【linux】工作时使用的命令
- stat/lstat函数使用
- C# GridViewExportUtil
- redis列表操作基本命令
- ubuntu更新下载源问题
- RightScale 2019年云状态报告:公共云快速增长 微软Azure增长最快
- hbase copyTable
- Java从零开始学三(public class和class)
- 异常处理----使用 try…catch…finally 处理异常