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

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

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

具体如下:

#import 
 
@interface Model : NSObject
 
 
@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自定义模型的存储)