zoukankan      html  css  js  c++  java
  • iOS保存model数据(自定义Model 可以存放到本地)

    1.先创建类目类:继承于NSUserDefaults

    2其次前提:保存的model要实现NSCoding

    3.在自定义的类目实现这两个方法

    -(void)setCustomObj:(id)obj forKey:(NSString *)key;

    -(id)customObjForKey:(NSString *)key;

    在自定义的类目中实现这两个方法

    -(void)setCustomObj:(id)obj forKey:(NSString *)key

    {

        if ([obj respondsToSelector:@selector(encodeWithCoder:)] == NO) {

            NSLog(@"对象存入失败!对象必须实现NSCoding 协议的 encodeWithCoder:方法");

            return;

        }

        NSData * encodeObject = [NSKeyedArchiver archivedDataWithRootObject:obj];

        NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

        [defaults setObject:encodeObject forKey:key];

        [defaults synchronize];

    }

     -(id)customObjForKey:(NSString *)key

    {

        NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

        NSData * encodeObject = [defaults objectForKey:key];

        if (encodeObject == nil) {

            return nil;

        }

        id obj = [NSKeyedUnarchiver unarchiveObjectWithData:encodeObject];

        return obj;

    }

    4.再次来到我们保存model中实现NSCoding协议

    - (id)initWithCoder:(NSCoder *)decoder

    {

        self = [super initWithCoder:decoder];

        

        if (self) {

            self.cityId = [decoder decodeObjectForKey:@"cityId"];

            self.cityName = [decoder decodeObjectForKey:@"cityName"];

            self.cityLat = [decoder decodeObjectForKey:@"cityLat"];

            self.cityLng = [decoder decodeObjectForKey:@"cityLng"];

            self.firstCharacter = [decoder decodeObjectForKey:@"firstCharacter"];

            self.subsidiaryBankId = [decoder decodeObjectForKey:@"subsidiaryBankId"];

        }

        

        return self;

    }

    - (void)encodeWithCoder:(NSCoder *)aCoder

    {

        [aCoder encodeObject:self.cityId forKey:@"cityId"];

        [aCoder encodeObject:self.cityName forKey:@"cityName"];

        [aCoder encodeObject:self.cityLat forKey:@"cityLat"];

        [aCoder encodeObject:self.cityLng forKey:@"cityLng"];

        [aCoder encodeObject:self.firstCharacter forKey:@"firstCharacter"];

        [aCoder encodeObject:self.subsidiaryBankId forKey:@"subsidiaryBankId"];

    }

     5.最后来到控制器中,实例化类目,就可以实现保存model

    1
  • 相关阅读:
    从nsurlsession、Alamofire到moya
    ssl是tcp的会话层与表示层
    Springboot+Thymeleaf+layui框架的配置与使用
    机械思维 信息思维
    路在何方—价值观、价值链与人生(草稿)
    世界由物质、能量、信息
    http_build_query()函数使用方法
    laravel 远程一对多实例
    MySQL中的float和decimal类型有什么区别
    mysql int(19) float(7,2) decimal(7,2)对比
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/4773777.html
Copyright © 2011-2022 走看看