iOS学习 --- Model的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiaxin_1105/article/details/82386180

iOS开发中经常会用到Model,怎样把字典转化成Model呢?个人觉得用KVC是很方便的。。Demo地址

字典类型

#import "ViewController.h"
#import "PeopleModel.h"

@interface ViewController ()

@end


NSMutableDictionary *dic_per = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@12,@"id",
@"cfdfvd",@"name",
[NSNumber numberWithInt:10],@"age",
[NSNumber numberWithBool:YES],@"sex",
nil];

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

#import <Foundation/Foundation.h>

@interface PersonModel : NSObject

@property(nonatomic, strong)NSNumber *userid;
@property(nonatomic, copy)NSString *name;
@property(nonatomic, assign)NSInteger age;
@property(nonatomic, assign)BOOL sex;
@property(nonatomic, assign)BOOL      is select; // 除了字典中包含的字段外还可以根据需要自己在model 中添加需要的字段

@end


在PersonModel.h 中要声明两个方法

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

方法的实现

#import "PersonModel.h"

@implementation PersonModel

+(instancetype)personObjectWithDic:(NSDictionary *)dic{
    
    PersonModel *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 ;
}

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

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

-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
  
    if ([key isEqualToString:@"id"]) {
        
        self.userid = value ;
    }
}

相关文章:

iOS基类Model--BaseModel

猜你喜欢

转载自blog.csdn.net/jiaxin_1105/article/details/82386180