美文网首页
iOS 字典转模型KVC实现

iOS 字典转模型KVC实现

作者: 胖男技术渣 | 来源:发表于2020-07-07 16:07 被阅读0次

字典转模型 KVC 实现

KVC 字典转模型弊端:必须保证,模型中的属性和字典中的key一一对应。

如果不一致,就会调用[<Status 0x7fa74b545d60> setValue:forUndefinedKey:]报key找不到的错。

分析:模型中的属性和字典的key不一一对应,系统就会调用setValue:forUndefinedKey:报错。

解决:重写对象的setValue:forUndefinedKey:,把系统的方法覆盖,就能继续使用KVC,字典转模型了。

  一: 如果你不想用第三方控件,感觉自由度太低,比较受限制,那么可以尝试这种方法,使用 KVC 机制的 如下方法

- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues;

二: 有的时候我们需要将字典里的数据类型转成我们模型需要的类型可以在-(void)setValue:(id)value forKey:(NSString *)key将value转换一下

// 将所有的Number数据类型转换为字符串

- (void) setValue:(id)value forKey:(NSString*)key{

if ([value isKindOfClass:[NSNull class]]) {

value=nil;

}elseif ([value isKindOfClass:[NSArrayclass]]) {

}else { 

value = [NSStringstringWithFormat:@"%@",value]; 

}

[supersetValue:value forKey:key];

}

// 对特殊字符 id 进行处理

- (void) setValue:(id)value forUndefinedKey:(NSString*)key {

NSLog(@"Undefined Key: %@", key); 

}

三: 如果我们还想要进行模型里的模型嵌套,或者模型里的模型数组或者其他处理怎么办?

在EmployeModel里面复写BaseModel里面的 setValueForKey比如我的EmployeModel里面还有个times 的字典数组,数组里面又是模型,单独处理。除此之外,我们还可以进行其他的一些数据微调处理。

-  (void) setValue:(id)value forKey:(NSString*)key {

if ([key isEqualToString:@"mobile"])  {

NSArray*arr = [(NSString*)value componentsSeparatedByString:@"-"];

value = [arr componentsJoinedByString:@""]; 

}elseif ([key isEqualToString:@"times"]) {

NSMutableArray*retArr = [NSMutableArrayarray];

for (int i =0; i < ((NSArray*)value).count; i++)  {

NSDictionary* aDayTimeDic  =  ((NSArray*)value)[i]; 

TimeModel *aDayTime = [[TimeModel alloc]initWithDic:aDayTimeDic];

[retArr addObject:aDayTime]; 

value = retArr; 

[supersetValue:value forKey:key]; 

}

相关文章

  • 14-Swift中字典转模型

    字典转模型(初始化时传入字典) 字典转模型(利用KVC转化) 一、 普通的字典转模型: 二、利用KVC字典转模型:

  • iOS 字典转模型KVC实现

    字典转模型 KVC 实现 KVC 字典转模型弊端:必须保证,模型中的属性和字典中的key一一对应。 如果不一致,就...

  • KVC的简单使用

    KVC字典转模型 KVC 中经常使用的就是字典转模型 KVC的大招 KVC设置对象属性及取值 KVC间接设置对象属...

  • iOS 字典转模型 KVC实现

    1. Student模型定义如下 在Student.h中 在Student.m中 2. 给Student模型赋值 ...

  • KVC底层实现和应用

    一、KVC字典转模型的实现原理 假设dict字典中有name,icon的Key,CYXModel模型类中必须要有同...

  • 字典转模型(二) --学习MJExtension

    字典转模型方法实现(利用kvc可快速实现) 但是有时字典一些属性我们不需要时, 即我们模型的属性与字典的key不一...

  • iOS KVC:字典转模型

    参考 iOS开发·KVC:字典转模型,防止因本地未定义字段(后台的字段与本地字符串名不一致)导致数据转换过程中的奔...

  • 小知识点二

    一、利用KVC字典转模型实现原理:遍历字典中的所有key,去模型中查找有没有跟key相似的属性名。 1.遍历出na...

  • runtime字典转模型

    KVC实现字典转模型 模型类Status 其中,模型中的属性都是我通过上篇介绍的自动获取模型属性的方式来获得的外部...

  • 使用runtime和KVC字典转模型

    使用KVC字典转模型的时候,KVC是通过遍历字典中的所有的key去模型中查找有没有对应的属性名,而runtime则...

网友评论

      本文标题:iOS 字典转模型KVC实现

      本文链接:https://www.haomeiwen.com/subject/pwtzqktx.html