zoukankan      html  css  js  c++  java
  • NSUserDefault 保存自定义对象

     

    由于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 = @"32";
        //将对象转化为字节流
        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);
  • 相关阅读:
    spark-RDD缓存,checkpoint机制,有向无环图,stage
    spark广播变量
    k8s部署spark
    spark简单安装
    搭建一套高可用的hadoop集群
    JavaScript实现无限级递归树的示例代码
    $.ajax 调用 Asp.Net Core Razor Page 后台代码
    2020蓝桥杯省赛B组第二轮 H 字串分值
    取整函数
    c++按空格分割句子
  • 原文地址:https://www.cnblogs.com/mohe/p/3784607.html
Copyright © 2011-2022 走看看