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

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

但是当我们需要存储模型的时候,直接用归档方法,实现不了存储。这个时候我们可以通过遵守<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



版权声明:本文为cjh965063777原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。