美文网首页iOS开发-数据操作
iOS中关于NSUserDefault自定义模型的存储

iOS中关于NSUserDefault自定义模型的存储

作者: 少年你这是喜脉啊 | 来源:发表于2018-08-08 16:50 被阅读3次

    在开发中,我们经常会存储一个数据,这个数据可能是一个字典或者模型,当我们需要存储一个字典的时候,我们可以直接用归档操作来存储。

    但是当我们需要存储模型的时候,直接用归档方法,实现不了存储。这个时候我们可以通过遵守<NSCopying>协议来编码对象和解码对象操作。

    具体如下:

    #import <Foundation/Foundation.h>
     
    @interface Model : NSObject<NSCoding>
     
     
    @property (nonatomic, strong) NSString * name;
    @property (nonatomic, strong) NSString * Class;
     
     
    @end
    
    //
    //  Model.m
    //  sfd
     
    #import "Model.h"
     
    @implementation Model
     
    - (void)encodeWithCoder:(NSCoder *)aCoder
    {
        [aCoder encodeObject:self.name forKey:@"name"];
        [aCoder encodeObject:self.Class forKey:@"Class"];
    }
    - (instancetype)initWithCoder:(NSCoder *)aDecoder
    {
        if (self = [super init]) {
            self.name = [aDecoder decodeObjectForKey:@"name"];
            self.Class = [aDecoder decodeObjectForKey:@"Class"];
        }
        return self;
    }
     
    @end
    
    
    然后直接调用就可以了。
    //
    //  ViewController.m
    //
     
    #import "ViewController.h"
    #import "Model.h"
     
    @interface ViewController ()
     
    @end
     
    @implementation ViewController
     
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        Model * model = [[Model alloc]init];
        model.name = @"周杰伦";
        model.Class = @"三年级二班";
        
        NSData * data = [NSKeyedArchiver archivedDataWithRootObject:model];
        [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"Test"];
        NSData * data1 = [[NSUserDefaults standardUserDefaults] valueForKey:@"Test"];
        Model * unmodel = [NSKeyedUnarchiver unarchiveObjectWithData:data1];
        NSLog(@"%@",unmodel.name);
        
        
    }
     
    @end
    
    

    相关文章

      网友评论

        本文标题:iOS中关于NSUserDefault自定义模型的存储

        本文链接:https://www.haomeiwen.com/subject/vkyxbftx.html