美文网首页
NSUserDefaults储存model对象

NSUserDefaults储存model对象

作者: 温水煮青蛙a | 来源:发表于2018-08-24 16:38 被阅读0次

model.h

//model.h
#import <Foundation/Foundation.h>

@interface UserDefaultsModel : NSObject<NSCoding>

@property(nonatomic, strong)NSString *name;
@property(nonatomic, copy)NSString *title;
@property(nonatomic, copy)NSString *num;
@property(nonatomic, assign)int i;
@property(nonatomic, assign)float f;

@end

model.m

//model.m
#import "UserDefaultsModel.h"

@implementation UserDefaultsModel

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self != nil) {
        NSLog(@"init");
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.title = [aDecoder decodeObjectForKey:@"title"];
        self.num = [aDecoder decodeObjectForKey:@"num"];
        self.i = [[aDecoder decodeObjectForKey:@"i"] intValue];
        self.f = [[aDecoder decodeObjectForKey:@"f"] floatValue];
    }
    return self;
}

- (void)encodeWithCoder:(nonnull NSCoder *)aCoder {
    NSLog(@"encodeWithCoder");
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeObject:self.title forKey:@"title"];
    [aCoder encodeObject:self.num forKey:@"num"];
    [aCoder encodeObject:@(self.i) forKey:@"i"];
    [aCoder encodeObject:@(self.f) forKey:@"f"];
}

@end

调用

UserDefaultsModel *model = [[UserDefaultsModel alloc] init];
    model.name = @"name1";
    model.title = @"title1";
    model.num = @"num1";
    model.i = 1;
    model.f = 1.11;
    //做归档处理 储存data类型
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:model];
    NSUserDefaults *udf = [NSUserDefaults standardUserDefaults];
    [udf setObject:data forKey:@"model1"];
    [udf synchronize];
//以上是存
    
//一下是取
    NSData *data1 = [udf objectForKey:@"model1"];
    UserDefaultsModel *resultModel = [NSKeyedUnarchiver unarchiveObjectWithData:data1];
    NSLog(@"resultModel.name=%@", resultModel.name);//resultModel.name=name1
    NSLog(@"resultModel.title=%@", resultModel.title);//resultModel.title=title1
    NSLog(@"resultModel.num=%@", resultModel.num);//resultModel.num=num1
    NSLog(@"resultModel.i=%d", resultModel.i);//resultModel.i=1
    NSLog(@"resultModel.f=%f", resultModel.f);//resultModel.f=1.110000


相关文章

网友评论

      本文标题:NSUserDefaults储存model对象

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