iOS KVC原理
来源:互联网 发布:实参数组类型 编辑:程序博客网 时间:2024/06/03 22:59
#import "StatusItem.h"@implementation StatusItem// 模型只保存最重要的数据,导致模型的属性和字典不能一一对应+ (instancetype)itemWithDict:(NSDictionary *)dict{ StatusItem *item = [[self alloc] init]; // KVC:把字典中所有值给模型的属性赋值 [item setValuesForKeysWithDictionary:dict]; // 拿到每一个模型属性,去字典中取出对应的值,给模型赋值 // 从字典中取值,不一定要全部取出来 // MJExtension:字典转模型 runtime:可以把一个模型中所有属性遍历出来 // MJExtension:封装了很多层// item.pic_urls = dict[@"pic_urls"];// item.created_at = dict[@"created_at"]; // KVC原理:// // 1.遍历字典中所有key,去模型中查找有没有对应的属性// [dict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull value, BOOL * _Nonnull stop) {// // // 2.去模型中查找有没有对应属性 KVC// // key:source value:来自即刻笔记// // [item setValue:@"来自即刻笔记" forKey:@"source"]// [item setValue:value forKey:key];// // }]; return item;}// 重写系统方法? 1.想给系统方法添加额外功能 2.不想要系统方法实现// 系统找不到就会调用这个方法,报错- (void)setValue:(id)value forUndefinedKey:(NSString *)key{}/* [item setValue:@"来自即刻笔记" forKey:@"source"] 底层原理: 1.首先去模型中查找有没有setSource,找到,直接调用赋值 [self setSource:@"来自即刻笔记"] 2.去模型中查找有没有source属性,有,直接访问属性赋值 source = value 3.去模型中查找有没有_source属性,有,直接访问属性赋值 _source = value 4.找不到,就会直接报错 setValue:forUndefinedKey:报找不到的错误 */@end
阅读全文
0 0
- ios-kvc\kvo 原理
- iOS KVC原理
- iOS OC KVC KVO 实现原理详解
- iOS KVC 和 KVO 原理实现
- KVC原理
- [ios]kvc
- iOS kvc
- IOS KVC
- ios kvc
- iOS KVC
- iOS开发之-KVC的实现原理探讨
- KVC 底层原理
- ios学习--kvo/kvc
- ios学习--kvc
- IOS KVC使用小结
- iOS KVC KVO KVB
- iOS KVO & KVC
- iOS KVC KVO KVB
- sql事务(Transaction)用法介绍及回滚实例
- gcc编译器
- MFC动态链接库
- 给seo外链员的一些忠告
- 视频<video>音频<audio>
- iOS KVC原理
- java图片之图片截取和图片压缩
- flask 表单
- Ubuntu安装Flatabulous主题
- 工作日志记录:关于脉脉这款应用的默认用户头像的一种实现方法
- 智能家居中的物联网技术体系架构与发展现状
- handler的原理分析
- 下载解码
- 数组中重复的数字