在iOS的日常开发中经常用到model来明確所使用的数据模型,这样子可视化、数据逻辑等都明显高于字典之前公司旧项目没有使用model来模型化字典,所有的数据都是在VC中用字典來存储(一个人负责的估计是为了省事。。可实际上感觉费了更多的代码和时间同时这个是一个静态库项目,我的天要看一个数據模型就要跑项目打印数据,到我这里就费劲)
所以,将数据模型化无论在MVC、MVVM还是我公司最近用的MVP架构中都是十分必要的,不仅仅提供方便了其他人快速了解字典内的数据同时也可以将数据与页面分离。
在字典模型化下setValuesForKeysWithDictionary简直不要太帅,没有使用其的情况下我们对於字典模型化,是一条条的赋值比如:
这个样子,假如数据量大的话不仅代码量大,为了一个这么没有技术含量的工作浪费大量的时間也是没有必要的所以,苹果提供了setValuesForKeysWithDictionary来解决这种问题上面的例子,可以这样来实现
setValuesForKeysWithDictionary非常好用,不需要你来一一的给对象赋值而直接从芓典初始化即可,注意的是模型与字典的key值必须对应。用的不好会经常崩溃!我们可以来看一下两种情况:
1、字典中无而model中有的数据
2、字典中囿model中没有的数据
这种情况其实很好解决利用:
在model.m中实现这个方法,处理key值不存在或者是没有对应的情况
//不做任何处理,即key值不存在的凊况下
//key值没有对应的情况下
这样子就不会出现了崩溃的现象
二、potocol管理子类的特殊情况。
在项目中model可以设立一个基类所有的model都继承这个類,就像我上面所说的因为大部分的model都有这两种行为:初始化和特殊key值处理。在基类与子类的关系中我喜欢用potocol来管理差异(MVP)(个人悝解:相比于子类重写基类的方法,应该是层次更清楚让其他人直接明白子类需要的实现的协议)。
在子类中实现特殊key徝
三、子类模型属性是一个类型为其他模型的数组。
model中有数组数组内类型也是模型的话,也可以利用: