開發中,我們經常會對model進行傳值,特別是當顯示列表數據時,使用字典轉model是非常方便的,MJExtension是非常方便的字典轉model的三方庫,其實直接利用KVC進行字典轉model也是非常方便的.以下是具體代碼,可以正常復制粘貼到項目上運行的,并非代碼片段
1.首先新建一個BaseModel
BaseModel.h文件中什么都不用寫
BaseModel.m寫上兩個方法
- (instancetype)initWithDictionary:(NSDictionary *)dictionary {
self = [super init];
if (self) {
//使用KVC的封裝好的字典操作方法
[self setValuesForKeysWithDictionary:dictionary];
}
return self;
}
//對于特殊字段的處理時限以下方法
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}
2.新建一個NSObject,基于BaseModel
起名為MyModel
MyModel.h文件添加屬性和方法
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *userid;
+ (instancetype)modelWithDictionary:(NSDictionary *)dict;
MyModel.m文件實現方法
+ (instancetype)modelWithDictionary:(NSDictionary *)dict {
MyModel *model = [[self alloc] initWithDictionary:dict];
return model;
}
//對于特殊字段的處理時限以下方法
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
if ([key isEqualToString:@"corpName"]) {
self.name = value;
}
}
3.控制器中引用#import "MyModel.h", 定義屬性
可以在viewDidload中進行測試
@property (nonatomic, strong) MyModel *myModel;
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *dic = @{@"id":@"123",
@"corpid":@"hs",
@"corpName":@"shhs",
@"userid":@"nmf",
@"maker":@"zq",
@"statue":@"走勢"};
self.myModel = [MyModel modelWithDictionary:dic];
NSLog(@"%@",[self.myModel valueForKey:@"name"]);
}
這樣,簡單的KVC模式的字典轉模型結束了,語言組織能力有待提高,在鍛煉中