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
  • 相关阅读:
    Linux vim 入门 配置 及 使用初步
    Java网络编程之TCP通信
    [ javascript ] getElementsByClassName与className和getAttribute!
    找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
    DNS分别在什么情况下使用UDP和TCP
    高仿京东APP首页“京东快报”自己主动向上滚动的广告条
    HDU 5016 Mart Master II (树上点分治)
    Myeclipse10完美破解过程
    git format-patch 用法【转】
    Git下的冲突解决【转】
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/4773777.html
Copyright © 2011-2022 走看看