由于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);

最新文章

  1. HTML 学习笔记 JQuery(DOM 操作2)
  2. UNIX:高级环境编程 - 第十五章 IPC:进程间通信
  3. hdu 1203
  4. C语言输入多组问题~ungetc回退字符到stdin
  5. 点击a标签,跳转到iframe中,并在iframe中显示指定的页面
  6. 167. Two Sum II - Input array is sorted
  7. 字符串(后缀自动机):Ahoi2013 差异
  8. Codeforces 518D Ilya and Escalator
  9. WS Security 认证方式详解
  10. bzoj3211花神游历各国 线段树
  11. hadoop用户写入文件权限不够的问题
  12. 【linux】工作时使用的命令
  13. stat/lstat函数使用
  14. C# GridViewExportUtil
  15. redis列表操作基本命令
  16. ubuntu更新下载源问题
  17. RightScale 2019年云状态报告:公共云快速增长 微软Azure增长最快
  18. hbase copyTable
  19. Java从零开始学三(public class和class)
  20. 异常处理----使用 try…catch…finally 处理异常

热门文章

  1. 【Android】15.3 Notification基础知识
  2. 每日英语:China Grapples With Genetically Modified Foods
  3. JavaScript 高程三读书笔记;
  4. echarts报表
  5. C语言 &#183; 冒泡法排序
  6. Mybatis批量更新&lt;转&gt;
  7. mysql数据库 详解
  8. thinkphp 集成 twig模版引擎
  9. 动态加载javascript增强版
  10. php juery ajax 传值