KVC字典转模型以及常见错误解决(接上昨晚的自动生成属性)
2016-06-12 10:24
513 查看
接上昨晚的数据源继续用,然后将自动生成的属性贴在模型中
# .h 文件中是属性(就不用我写了吧 T_T) #模型的属性名跟字典 -- 一 一对应 // 属性 // 定义一个类方法进行字典转模型 + (__kindof Model *)modelWithDict:(NSDictionary *)dict; # # .m 文件中 + (__kindof Model *)modelWithDict:(NSDictionary *)dict{ Model *model = [[Model alloc] init]; // 对的,你没有看错,一个KVC方法就OK了,前提是,你的模型属性必须与字典一一对应。 [model setValueForKeysWithDictionary:dict]; return model; }
#viewController中 NSMutableArray *models = [NSMutableArray array]; for (NSDictionary *dict in dictArr){ // 字典转模型(别忘记导入model类) Model *modle = [Model modelWithDict:dict]; [models addOBject:model]; } NSLog(@"%@",models);
途中会报的错误
//1.也许你的某个dict里面有一些其他dict没有的字段,没有在6/10的方法中读取出来 //因为昨天的方法是只会去读你传进去的那一个dict,这时你只需要找到那个特有的字段,加载model属性中就可以了。 //2.当你在6/10的方法中读取出来的属性中存在系统的关键字时候,或者后台返回给你的字段不是你想要的。那么你需要知道下面的这个方法。 #在model.m文件中重写系统的报错方法 // 解决KVC报错 - (void)setValue:(id)value forUNdefinedKey:(NSString *)key{ // key :代表没有找到的key(也就是关键字/不是你想要的字段名) // value:key对应的值 // 用自己想要的属性名代替不想要的key //下面那张图片是报关键字id错误,在model类中用_ID代替 if([key isEqualToString:@"id"]){ _ID = [value integerValue]; } NSLog(@"%@ --- %@",key ,value); }
这里就结束了,明天再跟进用runtime实现。晚安,好梦。
相关文章推荐
- Android Manifest 权限描述大全
- 异或运算的运用
- java开发经典书籍
- IOS Dev Intro - Delegation Notification and Observation
- 获取androidmanifest中的渠道号
- springmvc mybatis 整合 bootstrap
- xml文件:<context:annotation-config/>
- IOS Dev Intro - Notification Series 02
- Android Studio中如何获取sha1证书指纹数据debug.keystore
- IOS Dev Intro - Notification Series 01
- c debug.h
- 关于传递参数时,涉及数组的length = sizeof(a)/sizeof(int)还是为length = sizeof(a)的总结
- IOS Dev Intro - Key-Value Observing
- 【Linux】进程控制块PCD结构(tack_struct)
- 程序集重用
- Memcached是什么?【小强性能培训学员作品】
- IOS Dev Intro - Blocks Programming Series 06
- ajax+php实现自动提示文本框
- 我与【51CTO学院三周年有陌生到相爱】
- 五、centos 学习笔记