iOS 中model的使用

开发中经常会用model 进行传值,但是有时候直接用解析的字典也很方便那么什么时候用model呢? 个人理解 需要在本地做数据状态变化的用model 比较方便(比如需要对一个列表中的model进行单选或多选操作时)
而如果只是对数据进行展示 直接用字典进行赋值就ok 了

iOS 中怎么把字典转化为model 呢个人觉得KVC 是很方便的下面简单说一下如何利用KVC 进行字典和model 的转化

字典类型

NSDictionary *dic = @{@"id":@"123",
                          @"corpid":@"hs",
                          @"corpName":@"shhs",
                          @"userid":@"nmf",
                          @"maker":@"zq",
                          @"status":@"草拟"};

创建一个和字典对应的model 类 属性名需要和字典的key 值一致,由于id 是预留字段我们无法添加一个名为id 的属性,现在先用serialid 来代替它

#import <Foundation/Foundation.h>

@interface CorpModel : NSObject

@property(nonatomic,strong)NSString *serialid;
@property(nonatomic,strong)NSString *corpid;
@property(nonatomic,strong)NSString *corpName;
@property(nonatomic,strong)NSString *userid;
@property(nonatomic,strong)NSString *maker;
@property(nonatomic,strong)NSString *status;
@property(nonatomic,assign)bool      is select; // 除了字典中包含的字段外还可以根据需要自己在model 中添加需要的字段

@end

在CorpModel 中要实现两个方法

-(instancetype)initWithDic:(NSDictionary *)dic ;
+(instancetype)corpObjectWithDic:(NSDictionary *)dic;

方法的实现

+(instancetype)corpObjectWithDic:(NSDictionary *)dic{
    
    CorpModel *model = [[self alloc]initWithDic:dic];
    return model ;
}

-(instancetype)initWithDic:(NSDictionary *)dic{
    
    if (self = [super init]) {
      
        [self setValuesForKeysWithDictionary:dic];
    }
// 自己在model中添加的字段无法通过setValuesForKeysWithDictionary 进行赋值要在初始化时定义初值
    self.isselect = NO ;
    return self ;
}

当你在外部调用corpObjectWithDic:方法时内部会调用initWithDic 的方法返回一个model 对象

对于特殊字段的处理 实现以下方法

// 
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
  
    if ([key isEqualToString:@"id"]) {
        
        self.serialid = value ;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 ​ iOS源码解析—YYModel(YYClassInfo)分析了如何根据OC的Class对象构建...
    egoCogito_panf阅读 14,006评论 4 32
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,679评论 1 23
  • 来自网络 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会...
    用心在飞阅读 4,280评论 5 4
  • 她已经彻底失联了,习惯了,不再如最初那般热烈了。 听着ever eternity,心里很平静,回忆的味道。 故事是...
    天上有颗呆星阅读 1,567评论 0 0
  • 这是昨晚和朋友视频的时候朋友给我截的图 昨晚好像是两点多睡的觉 和朋友视频快一个小时 我也不知道我两在说些什么 就...
    零八一四阅读 2,271评论 0 0

友情链接更多精彩内容