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

转自:https://blog.csdn.net/cjh965063777/article/details/51920668

 

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

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

具体如下:

 

#import <Foundation/Foundation.h>
 
@interface Model : NSObject<NSCoding>
@property (nonatomic, strong) NSString * name;
@property (nonatomic, strong) NSString * Class;
@end
 

 

//
//  Model.m
//  sfd
//
//  Created by 曹敬贺 on 16/7/15.
//  Copyright © 2016年 北京无限点乐科技有限公司. All rights reserved.
//
 
#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
//  sfd
//
//  Created by 曹敬贺 on 16/7/15.
//  Copyright © 2016年 北京无限点乐科技有限公司. All rights reserved.
//
 
#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
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值