Runtime的入门与应用之八-字典转模型
来源:互联网 发布:服务行业大数据案例 编辑:程序博客网 时间:2024/06/05 14:26
字典转模型的第一步:设计模型
- 模型属性,通常需要跟字典中的key一一对应
- 问题:一个一个的生成模型属性,很慢?
- 需求:能不能自动根据一个字典,生成对应的属性。
- 解决:提供一个分类,专门根据字典生成对应的属性字符串。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
字典转模型的第二步(方式1):KVC的方式来字典转模型(之前使用的方式)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
KVC字典转模型弊端:必须保证,模型中的属性和字典中的key一一对应。如果不一致,就会调用[ setValue:forUndefinedKey:],报key找不到的错。
分析:模型中的属性和字典的key不一一对应,系统就会调用setValue:forUndefinedKey:报错。
解决:重写对象的setValue:forUndefinedKey:,把系统的方法覆盖,就能继续使用KVC,字典转模型了。
字典转模型的第二步(方式1):利用Runtime来字典转模型
- 思路:利用运行时,遍历模型中所有属性,根据模型的属性名,去字典中查找key,取出对应的值,给模型的属性赋值。
- 步骤:提供一个NSObject分类,专门字典转模型,以后所有模型都可以通过这个分类转。
实现代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
个人总结:
实现字典和模型的自动转换:首先要根据模型的实现模型。。。。。。。
(核心就是可以遍历出字典中的每个属性,json解析中大牛框架都用了这个特性,包括MJEXtension,YYModel,jsonModel都是将json转换为字典,再遍历字典中的每个属性来进行modle的转换)。
基本上主流的json 转model 都少不了,使用运行时动态获取属性的属性名的方法,来进行字典转模型替换,字典转模型效率最高的(耗时最短的)的是KVC,其他的字典转模型是在KVC 的key 和Value 做处理,动态的获取json 中的key 和value ,当然转换的过程中,第三方框架需要做一些判空
啊,镶嵌
的逻辑处理, 再进行KVC
转模型.
无论JsonModle,YYKIt,MJextension 都少不了[xx setValue:value forKey:key];
这句代码的,不信可以去搜,这是字典转模型的核心方法。
阅读全文
0 0
- Runtime的入门与应用之八-字典转模型
- runtime从入门到精通(八)—— 使用runtime实现字典转模型
- Runtime的入门与应用之三
- runtime模型与字典互转
- Runtime的使用3 【字典转模型】
- Runtime的使用3 【字典转模型】
- Runtime的入门与应用之六-实际运用
- Runtime的入门与应用之九-页面跳转
- Runtime的入门与应用之四-相关术语
- iOS runtime字典转模型
- runtime -- 实现字典转模型
- swift之用runtime实现字典转模型
- Runtime运行时的简单使用,字典转模型
- 封装应用之字典转模型
- MJExtention 字典转模型详解使用注意以及利用runtime字典转模型的使用注意
- Runtime的入门与应用之五-消息发送与转发
- Runtime的入门与应用之七-归档与解档
- KVC和runtime字典转模型
- Runtime的入门与应用之七-归档与解档
- 贪心算法的找钱问题
- spring jar
- jQuery 兼容CommonJS,AMD的写法.
- 起点
- Runtime的入门与应用之八-字典转模型
- u盘NTFS与FAT32区别
- 该死的感觉.
- JDBC通用方法及DbUtils组件使用
- Runtime的入门与应用之九-页面跳转
- 推荐一个web在线的mysql数据库管理系统
- Linux系统入门基础学习(一)
- U盘格式ntfs 转ext4
- 一个安卓工程师学习后台的经历《二》maven篇